我正在尝试创建一个文本文件,其中包含某个目录中所有内容的路径和文件名。环顾四周后,看起来最好的方法是使用 GLOB 函数,我能够编写一段代码来获取每个文件的路径列表:
import glob
dirlist = glob.glob('P:\MyDep\Myunit\MySection\Stuff\Reports\YR*\O*\*\*\*\*.pdf')
Bureau\Traffic\Reports\YR*\R*\*\*.pdf')
fo=open('new.txt', "w")
fo.write('\n'.join(dirlist))
fo.close()
但是,我发现自己使用 Excel 的 MID 语句从报告中提取值。理想情况下,我希望文件的基本名称包含在路径中作为元组。我提出了以下建议:
for f in glob.glob('P:\MyDep\Myunit\MySection\Stuff\Reports\YR*\O*\*\*\*\*.pdf'):
fpath, fname = os.path.split(f)
rname, extname = os.path.splitext(fname)
dirtup = (f, rname)
print dirtup
但我似乎无法将结果写入文本文件:我似乎能做的最好的事情就是生成一个文本文件,其中包含来自dirtup的一个列表(编辑以显示带建议的代码):
import glob, os
for f in f in glob.glob('P:\MyDep\Myunit\Mysection\Stuff\Reports\YR*\O*\*\*\*\*.pdf'):
fpath, fname = os.path.split(f)
rname, extname = os.path.splitext(fname)
dirtup = (f, rname)
fo=open('axlspd.txt', "w")
fo.write(', '.join(dirtup)+'\n')
fo.close()
如何将 dirtyup 的所有结果放入文本文件中?提前致谢。
最佳答案
问题是您多次打开该文件。使用“w”标志,文件每次打开时都会被截断,您只能看到最后一次写入的内容。
在循环之前打开文件,然后在循环之后关闭它,或者使用新奇的 with 语句:
import glob, os
with open('axlspd.txt', "w") as axlspd:
for f in f in glob.glob('P:\MyDep\Myunit\Mysection\Stuff\Reports\YR*\O*\*\*\*\*.pdf'):
fpath, fname = os.path.split(f)
rname, extname = os.path.splitext(fname)
dirtup = (f, rname)
axlspd.write(', '.join(dirtup)+'\n')
当您退出该代码块时,该文件会自动关闭。
<小时/>这是您错过的引用:http://docs.python.org/library/functions.html#open
The most commonly-used values of mode are 'r' for reading, 'w' for writing (truncating the file if it already exists)
关于python - 初学者Python : Writing GLOB Results to txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11453227/