python中的文件错误
我有以下脚本:python中的文件错误,python,Python,我有以下脚本: import os import stat curDir = os.getcwd()+'/test' for (paths, dirs, files) in os.walk(curDir): for f in files: if os.stat(f)[stat.ST_SIZE]>0: print f 和文件夹test/: test_folder: --test.wav a.exe t1 t
import os
import stat
curDir = os.getcwd()+'/test'
for (paths, dirs, files) in os.walk(curDir):
for f in files:
if os.stat(f)[stat.ST_SIZE]>0:
print f
和文件夹test/:
test_folder:
--test.wav
a.exe
t1
t2
rain.wav
使用geany运行此脚本时,会出现以下错误:
回溯(最近一次呼叫最后一次):
文件“new_folder_deleter.py”,第8行,在
如果os.stat(f)[stat.ST_SIZE]>0:
OSError:[Errno2]没有这样的文件或目录:“a.exe”
但当我在空闲状态下运行时:
它只是在子文件夹test_文件夹中打印test.wav
有人能解释一下为什么会这样,我怎样才能修复它吗?
附笔:
我的目标是浏览所有文件并删除指定大小的文件。
os.walk
函数返回相对于当前文件夹的文件和目录名,因此您需要os.stat(os.path.join(path,f))
您需要为os.stat
指定完整路径,除非该文件位于当前工作目录中。解决此问题的最简单方法是在尝试访问文件之前更改WD:
curDir = os.getcwd()+'/test'
os.chdir(curDir)
更通用的解决方案是将完整路径传递到os.stat
:
if os.stat(os.path.join(paths, f))[stat.ST_SIZE]>0:
print f
我不太清楚为什么IDLE在这里不产生错误。文件名只是基本名称。您需要使用
os.path.join(path,f)
从os.walk()
返回的files
组件中的文件列表只是文件名,没有路径。在对这些文件执行任何操作(包括stat()
)之前,您需要重新组合文件的路径。您是否尝试过这样做-os.stat(os.path.join(path,f)),而不仅仅是os.stat(f)
if os.stat(os.path.join(paths, f))[stat.ST_SIZE]>0:
print f