如何打开带有增量编号的文件?

时间:2015-11-01 13:43:21

标签: python

现在我正在这样做:

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)。是否有使用范围修改脚本的内容?所以我不必输入所有文件名?

5 个答案:

答案 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)

python 2 string formating

filename = 'ch%02d.md' % file_index

python 3 string formating

filename = 'ch{0:02}.md'.format(file_index)

答案 4 :(得分:0)

我对o.walkre模式的尝试是可自定义的。更好的是你有嵌套目录,在这种情况下只需将母文件夹的路径作为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