使用 qBittorrent 运行脚本时如何克服 Python 中的 IO 错误 13
Posted
技术标签:
【中文标题】使用 qBittorrent 运行脚本时如何克服 Python 中的 IO 错误 13【英文标题】:How to overcome IO Error 13 in Python when running script using qBittorrent 【发布时间】:2017-04-03 10:47:45 【问题描述】:我从互联网上下载了很多 linux ISO 种子。我制作了自己的小 Python 脚本,它将向我的 iPhone 发送有关已完成下载的 torrent 详细信息的通知。将种子的名称、标签和大小发送给我。
我使用名为Pushbullet.py 的python 库将通知发送到我的手机。
import os , sys, string, time, random
from datetime import datetime
from os import linesep
from pushbullet import Pushbullet
#Random Sys.Argv replacements
names = ['ubuntu-16.04.1-desktop-amd64.iso', 'Kali-Linux', 'Linux-Mind', 'dog', 'Arch-Linux']
labels = ['Movie', 'TV Show', 'Music', 'Program' ,'Game', 'eBook']
sizes = ['5000000000', '2000000000', '777758998000']
name_rand = (random.choice(names))
label_rand = (random.choice(labels))
sizes_rand = (random.choice(sizes))
#System arguements passed from qBittorrent to this script. This usually should be sys.argv[1-3] but changed for this case.
torrent_name = name_rand
torrent_category = label_rand
torrent_size = sizes_rand
qbittorrent_byte = Decimal(torrent_size)
mebibyte_divisor = Decimal(1048576)
mebibyte_value = qbittorrent_byte / mebibyte_divisor
mebibyte_string = str(round(mebibyte_value,2))
#Pushbullet Config
pb = Pushbullet("API-KEY")
iPhone = pb.devices[0]
t = time.localtime()
date_run = time.asctime(t)
#Pushbullet message templates
pb_title = torrent_category + " Download Completed"
pb_message = "Torrent: " + torrent_name + "\n" + "Size: " + mebibyte_string + " MB" + "\n" + "Label: " + torrent_category + "\n" + "Run on: " + date_run
pb_debug = date_run + "\n" + "Torrent: " + torrent_name + "\n" + "Size: " + mebibyte_string + " MB" + "\n" + "Label: " + torrent_category
def Send_Push():
push = iPhone.push_note(pb_title, pb_message)
print "PUSH sent successfully"
def write_file():
file = open("debug.txt", "a")
pb_message_debug = date_run + "\n" + "Torrent: " + torrent_name + "\n" + "Size: " + mebibyte_string + " MB" + "\n" + "Label: " + torrent_category
file.write(pb_message_debug + "\n")
file.close()
Send_Push()
write_file()
此脚本可用于向我的手机发送测试消息。当我将此文件保存到桌面并使用 CMD 运行它时,它会将消息发送到我的手机,甚至按预期写入 debug.txt 文件。
但是当我尝试将 qBittorrent 配置为在下载完成时运行脚本时,它会将消息发送到我的手机,但不会附加到 debug.txt 文件中。
每当我尝试使用 CMD 运行脚本时,它都可以正常工作。将消息发送到我的手机并附加到 debug.txt
我的理论是 qBittorrent 是我收到 IO Error 13 Permission Denied 的原因..
帮助一个人?接受任何更改..
【问题讨论】:
【参考方案1】:问题很可能是您相对指定了debug.txt文件的路径。以下行将在 当前工作目录 中创建一个名为 debug.txt
的文件。
file = open("debug.txt", "a")
如果您的 torrent 应用使用默认情况下您没有写入权限的工作目录(例如您的程序文件夹)运行脚本,您将收到权限被拒绝错误。
尝试将路径更改为绝对路径(您具有写入权限的位置,例如您的主文件夹):
file = open(r"C:\users\your_username_here\debug.txt", "a")
这应该可以解决问题。
【讨论】:
以上是关于使用 qBittorrent 运行脚本时如何克服 Python 中的 IO 错误 13的主要内容,如果未能解决你的问题,请参考以下文章