2017-04-03 1 views
0

インターネットからたくさんのLinux ISOのトレントをダウンロードします。私は自分の小さなPythonスクリプトを作って、自分のiPhoneに、ダウンロードが完了したトレントの詳細を通知します。トレントの名前、ラベル、サイズを送ってくれます。qBittorrentを使用してスクリプトを実行しているときにPythonのIO Error 13を克服する方法

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エラー13許可を取得していますなぜ

ヘルプ男出ているというのが私の理論でありますか?変更を反映します。

答えて

0

問題は、おそらくdebug.txtファイルのパスを相対的に指定していることです。次の行は、現在の作業ディレクトリにファイルを作成します。名前はdebug.txtです。

file = open("debug.txt", "a") 

あなたの急流のアプリを使用すると、デフォルトでは(例えば、あなたのプログラムフォルダ)への書き込みアクセス権を持っていない作業ディレクトリを使用してスクリプトを実行している場合は、あなたが許可拒否エラーを取得します。これは、問題を修正する必要があり

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

:絶対何か(あなたが書き込みアクセス権を持っている場所、例えばホームフォルダ)へのパスを変更するには

してみてください。

関連する問題