Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的文件错误_Python - Fatal编程技术网

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