使用 qBittorrent 运行 脚本时如何克服 Python 中的 IO 错误 13

How to overcome IO Error 13 in Python when running script using qBittorrent

我从互联网上下载了很多 linux ISO 种子文件。我已经制作了自己的小 python 脚本,它会向我的 iPhone 发送有关已完成下载的 torrent 详细信息的通知。将 torrent 的名称、标签和大小发送给我。

我使用名为 Pushbullet.py 的 python 库将通知发送到我的 phone。

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()

此脚本可用于向我的 phone 发送测试消息。当我将此文件保存到桌面并使用 CMD 运行 时,它会将消息发送到我的 phone,甚至按预期写入 debug.txt 文件。

但是当我尝试将 qBittorrent 配置为 运行 脚本时,只要下载完成,它就会将消息发送到我的 phone,但不会附加到 debug.txt 文件.

每当我尝试使用 CMD 运行 脚本时,它都完全有效。将消息发送到我的 phone 并附加到 debug.txt

我的理论是 qBittorrent 是我收到 IO 错误 13 权限被拒绝的原因..

帮助一个人?接受任何更改..

问题很可能是您相对地指定了 debug.txt 文件的路径。以下行将在 当前工作目录 中创建一个名为 debug.txt.

的文件
file = open("debug.txt", "a")

如果您的 Torrent 应用程序使用默认情况下您没有写入权限的工作目录(例如您的程序文件夹)运行脚本,您将收到权限被拒绝的错误。

尝试将路径更改为绝对路径(您具有写入权限的位置,例如您的主文件夹):

file = open(r"C:\users\your_username_here\debug.txt", "a")

这应该可以解决问题。