Python文件输入输出错误

0 投票
2 回答
1710 浏览
提问于 2025-04-15 21:16

我有一个程序,它会监控一个文件夹里的Word文档,看看这些文件有没有被修改。当我运行这个程序,打开文件夹里的一个.doc文件,做了一些修改并保存后,就出现了一个错误 - Windows错误[2] 系统找不到指定的文件。你有什么建议可以解决这个问题吗?

编辑1:实际的错误代码是这样的

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

试着使用 os.path.join(),比如:

root="c:\\"
path=os.path.join(root,"Users","keinsfield","Desktop","colegio")
....
 for rootdir, dirs, files in os.walk(path):
 ....
0

我觉得从错误信息来看,很明显在调用 os.walkos.stat 之间,那个 临时 文件被删除了。如果你不需要进入子文件夹,其实不需要用 os.walk。你可以用 glob.iglob 来获取只有文档文件的列表:

for file in glob.iglob(os.path.join(root, '*.doc')):
    print(file)

撰写回答