我有这个简单的Python代码:
import os
print [f for f in os.listdir('C:\Users\g514549\Desktop\MyFolder') if os.path.isfile(f)]
现在,如果我打开目录,我会得到以下所有文件:
但是当我运行python脚本时,我得到一个空字符串,表示所有文件都返回False
:
但是当我改变这样的目录时:
import os
print [f for f in os.listdir('C:\Users\g514549\Desktop\C++') if os.path.isfile(f)]
它正确显示所有文件。 第二个文件夹内容如下。
发生了什么事? 我已经尝试删除第一个目录中的所有文件,并使用不同的文本编辑器和不同的编码创建一些虚拟文件,但没有任何工作。
注意 我只能在第一个文件夹中的任何exe文件中获得
注2 这不是所报告问题的重复。这个是不同的
答案 0 :(得分:2)
原因是'C:\Users\g514549\Desktop\C++'
是您当前的路径。
/tmp
中没有任何内容:
>>> len([f for f in os.listdir('/tmp') if os.path.isfile(f)])
0
但是当我创建完整路径时:
>>> len([f for f in os.listdir('/tmp') if os.path.isfile(os.path.join('/tmp', f))])
2
更改为/tmp
:
cd /tmp
让它在没有完整路径的情况下工作:
>>> len([f for f in os.listdir('/tmp') if os.path.isfile(f)])
2
要进行保存,请始终创建完整路径。您永远不知道当前工作目录是否因为您无法控制的原因而发生变化。
注意:在Windows上,在复制粘贴路径时始终使用原始字符串:
r'C:\Users\g514549\Desktop\C++'
以避免\n
,\t
或其他格式字符所造成的影响。
答案 1 :(得分:0)
您可以使用os.walk
来显示所有文件。
import os
print [f for (dir, subdirs, fs) in os.walk('.') for f in fs]