だから私はそのように見えるファイルを持っています:
#!/usr/bin/python
import MySQLdb
import subprocess
from subprocess import call
import re
conx = MySQLdb.connect (user = 'root', passwd = '******', db = 'vaxijen_antigens')
cursor = conx.cursor()
cursor.execute('select * from sequence')
row = cursor.fetchall()
f = open('/home/rv/ncbi-blast-2.2.23+/db/vdatabase.fasta', 'w')
for i in row:
f.write('>'+i[0].strip()+'\n')
s = re.sub(r'[^\w]','',str(i[1]))
s = ''.join(s)
for k in range(0, len(s), 60):
f.write('%s\n' % (s[k:k+60]))
f.write('\n')
f.close()
subprocess.call(['formatdb', '-p', 'T', '-i', r'/home/rv/ncbi-blast-2.2.23+/db/vdatabase.fasta'])
ファイルはコマンドラインから問題なく実行されますが、crontabで実行しようとすると、次のエラーが発生します。
File "/home/rv/ncbi-blast-2.2.23+/db/formatdb.py", line 29, in <module>
subprocess.call(['formatdb', '-p', 'T', '-i',
r'/home/rv/ncbi-blast-2.2.23+/db/vdatabase.fasta'])
OSError: [Errno 2] No such file or directory
わかりません。ファイルはそのディレクトリにあります。ダブルチェックとトリプルチェックを行いました。ファイルパスを生の文字列に変換しようとしたため、パスの前に小文字の「r」が付いていましたが、それもできませんでした。