Ошибка ввода-вывода Python - PullRequest
0 голосов
/ 06 апреля 2010

У меня есть программа, которая отслеживает папку с текстовыми документами на предмет любых изменений, внесенных в файлы. Ошибка - Ошибка Windows [2] Система не может найти указанный файл - появляется, когда я запускаю программу, открываю .doc в папке, вносим некоторые изменения и сохраняю ее. Любые предложения о том, как это исправить?

Edit1: фактический код ошибки выглядит следующим образом

File "C:\Users\keinsfield\Desktop\docu.py", line 27, in check
   if info[0]==os.stat(os.path.join(r"C:\Users\keinsfield\Desktop\colegio",file
).st_ctime:
WindowsError: [Error 2] The system cannot find the file specified: 'C:\\Users\\k
insfield\\Desktop\\colegio\\~WRD1761.tmp'

Вот код:

def archivar():
    txt = open('archivo.txt', 'r+' )
    for rootdir, dirs, files in os.walk(r"C:\Users\keinsfield\Desktop\colegio"):
        for file in files:
            time  = os.stat(os.path.join(rootdir, file)).st_ctime
            txt.write(file +','+str(time) + '\n')
def check():
    txt = [col.split(',') for col in (open('archivo.txt', 'r+').read().split('\n'))]
    files = os.listdir(r"C:\Users\keinsfield\Desktop\colegio")  
    for file in files:
        for info in txt:
                if info[0]==os.stat(os.path.join(r"C:\Users\keinsfield\Desktop\colegio",file)).st_ctime:
                   print "modified" 

Ответы [ 2 ]

0 голосов
/ 06 апреля 2010

Я думаю, из трассировки совершенно ясно, что временный файл был удален между os.walk и os.stat вызовами. Вам на самом деле не нужно использовать os.walk, если вы не возвращаетесь в подкаталоги. Вы можете использовать glob.iglob, чтобы получить список только файлов документов:

for file in glob.iglob(os.path.join(root, '*.doc')):
    print(file)
0 голосов
/ 06 апреля 2010

попробуйте использовать os.path.join() например

root="c:\\"
path=os.path.join(root,"Users","keinsfield","Desktop","colegio")
....
 for rootdir, dirs, files in os.walk(path):
 ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...