2016-11-26 12 views
-2

ディレクトリ内のファイルに「No such file or directory」と表示されてもどうしますか?Crontabの問題、ディレクトリ内のファイルに「No such file or directory」と表示されている場合もあります

私はcrontab -eを使用してthront crontabを追加しています。

Crontab;

MAILTO="" 
*/1 * * * * /home/TwitterFollowBot/bot.py 2>/tmp/twitterBot.log 

Bot.py

#!/usr/bin/env python 

from TwitterFollowBot import TwitterBot 
my_bot = TwitterBot() 

from TwitterFollowBot import TwitterBot 
my_bot = TwitterBot("config.txt") 

from TwitterFollowBot import TwitterBot 
my_bot = TwitterBot() 
my_bot.sync_follows() 

from TwitterFollowBot import TwitterBot  
my_bot = TwitterBot() 
my_bot.auto_rt("@ShoutGamers", count=2200) 

パス。

/home/TwitterFollowBot/bot.py 

Crontab log;

Traceback (most recent call last): 
    File "/home/TwitterFollowBot/bot.py", line 5, in <module> 
    my_bot = TwitterBot() 
    File "/home/TwitterFollowBot/TwitterFollowBot/__init__.py", line 42, in __init__ 
    self.bot_setup(config_file) 
    File "/home/TwitterFollowBot/TwitterFollowBot/__init__.py", line 78, in bot_setup 
    with open(config_file, "r") as in_file: 
IOError: [Errno 2] No such file or directory: 'config.txt' 
+0

** **ディレクトリとは何ですか? cronがあなたのプログラムを起動するディレクトリ( '/')? – Anthon

答えて

0

それはちょうどあなたがそのは、(おそらくあなたのホームディレクトリ)に構成されたどんな場所から入れているコマンドを実行してのcrontabには、ディレクトリでその中にあなたのコードを実行されません。

あなたはsys.argv経由でファイルのパスを取得することであることを解決することができます:

#!/usr/bin/env python 

import sys 
import os.path 
from TwitterFollowBot import TwitterBot 

path = sys.argv[0].rsplit("/", 1)[0] 

TwitterBot() # I don't know if this does something, but as the assigned value is never used... 

TwitterBot(os.path.join(path, "config.txt")) # Same here. I put the path in front of "config.txt" 

TwitterBot().sync_follows() 

TwitterBot().auto_rt("@ShoutGamers", count=2200) 
+0

私はあなたの助けに本当に感謝しますが、このコーディング部分はどこに置く必要がありますか? –

+0

私はあなたの全体のコードをここに入れました。 – CodenameLambda

+0

まだ動作していませんが、 "my_bot.auto_rt"を無視して ".auto_rt"と書いてもうまくいきますか? –