我正在尝试遍历文件夹以对特定文件执行分析。
我们说我有3个名为S1
,S2
和S3
的文件夹。每个文件夹都包含一个名为hi.csv
的同名文件。一旦我让脚本成功遍历每个文件夹并找到该文件,我将分析CSV并在每个文件夹中创建一个新的CSV文件。
代替分析代码,我只是尝试在第一个实例中打印文件。理想情况下,我会在每个子文件夹hi.txt
,S1
和S2
下看到名为S3
的文件名。
这是我到目前为止所尝试的内容,但它不起作用:
fn = 'hi.txt'
indir = '/Users/sheena/Desktop/Test'
for root, dirs, filenames in os.walk(indir):
for d in dirs:
if os.path.isfile(fn):
print(f)
答案 0 :(得分:1)
如果您要检查某个文件名,则应在filenames
中进行检查,如果成功,则当前文件夹为root
。 dirs
没有输入图片。
fn = 'hi.txt'
indir = '/Users/sheena/Desktop/Test'
for root, _, filenames in os.walk(indir):
if fn in filenames:
print("Got: {}/{}".format(root, fn))
看看它是否按您想要的方式工作。如果没有,请评论。
答案 1 :(得分:1)
查看错误的简单方法是添加一行
print(root, dirs, filenames)
紧接着第一个' for'环。你得到的输出是
/tmp ['s3', 's2', 's1', ...] ['test.py', 'GRADUATE BALLOT APPLICATION FORM 2016-17.doc', 'ankid6955d9721560531274cb8f50ff595a9bd39d66f', '.X0-lock']
/tmp/s3 [] ['hi.txt']
/tmp/s2 [] ['hi.txt']
/tmp/s1 [] ['hi.txt']
/tmp/hsperfdata_joshua [] ['391']
/tmp/cujc ['foo'] []
/tmp/yaourt-tmp-joshua [] []
/tmp/.Test-unix [] []
/tmp/.font-unix [] []
/tmp/.XIM-unix [] []
所以
答案 2 :(得分:0)
if os.path.isfile(os.path.join(d,fn)):
我想......也许......这可能不是找到匹配
的文件的最佳方法for root, dirs, filenames in os.walk(indir):
for fname in filenames:
if fname == fn:
print os.path.join(root,fname)
可能好一点