现在我正在这样做:
filenames = ['ch01.md', 'ch02.md', 'ch03.md', 'ch04.md', 'ch05.md', 'ch06.md']
with open('chall.txt', 'w') as outfile:
for fname in filenames:
但我有很多文件写为chxx.md(直到ch24.md
)。是否有使用范围修改脚本的内容?所以我不必输入所有文件名?
答案 0 :(得分:3)
您可以使用glob
。这是一种使用通配符收集文件的简便方法。
import glob
filenames = glob.glob('/yourDirectory/ch*.md') # Will give you a list of all the file names
with open('chall.txt', 'w') as outfile:
for fname in filenames:
答案 1 :(得分:1)
您还可以使用for x in
语法,如下所示:
filenames = ['ch0'+str(x)+'.md' for x in range(7)]
答案 2 :(得分:0)
只是做:
with open('chall.txt', 'w') as outfile:
for index in range(1, 7):
filename = 'ch' + index.zfill(2) + '.md'
答案 3 :(得分:0)
filename = 'ch%02d.md' % file_index
filename = 'ch{0:02}.md'.format(file_index)
答案 4 :(得分:0)
我对o.walk
和re
模式的尝试是可自定义的。更好的是你有嵌套目录,在这种情况下只需将母文件夹的路径作为seacrh_folder
。
在这种方法中,您可以更好地控制文件名,而不是其他任何方法。
import os,re
pattern = re.compile(r'ch[0-9]+(?=.md)')
seacrh_folder = r"C:\Users\USER_NAME\Desktop"
for root,dir,files in os.walk(seacrh_folder):
for file in files:
if pattern.match(file):
print file
#do something
else:
pass
打印 -
ch01.md
ch012983928338.md
ch0344.md