Python 打开具有连续标题的文件

Python 打开具有连续标题的文件,python,Python,我试图在一个循环中打开许多文件,其格式为name_1.dat、name_2.dat等。如果我只是写信 for j in range(1,50): in_file=open(name+j+".dat", "r") 我得到了错误TypeError:无法连接我有点理解的'str'和'int'对象。我试着把这个改成 for j in range(1,50): in_file=open(sys.argv[1]+j.to_eng_string()+".dat", "r") 但是现在我得到

我试图在一个循环中打开许多文件,其格式为name_1.dat、name_2.dat等。如果我只是写信

for j in range(1,50):
    in_file=open(name+j+".dat", "r")
我得到了错误TypeError:无法连接我有点理解的'str'和'int'对象。我试着把这个改成

for j in range(1,50):
    in_file=open(sys.argv[1]+j.to_eng_string()+".dat", "r")
但是现在我得到了一个错误AttributeError:'int'对象没有属性'to_eng_string',这也是我可以理解的。我对python只了解很少,不知道该怎么做。有什么建议吗

谢谢

您需要先将j转换为str,然后再将其连接到其他字符串。从不同类型的变量构造字符串的一种方法是使用格式,尽管有许多方法:

for j in range(1,50):
    in_file=open("{}_{}.dat".format(name, j), "r")
尝试使用:


您还可以从中查看如何使用os.listdir。

这里的大多数答案都向您展示了如何生成与文件名模式匹配的字符串。假设名为name35.dat的文件不存在,则需要捕获该异常

在这里,我通过对匹配该模式的所有文件使用来查看实际存在的文件:

import glob
print glob.glob('name[0-9]*.dat')
使用正则表达式限制某些子集:

import re, glob, sys
def expand(x,lo=0,hi=sys.maxint): 
    return lo<=int(re.search(r'\d+', x).group(0))<=hi

# all files that match 'name1.dat' to 'name50.dat' inclusive
print [e for e in glob.glob('name[0-9]*.dat') if expand(e, 1, 50)]

现在,您有了一个与给定模式相匹配的文件列表。

>有什么建议吗?<是-阅读一些Python教程:或者您可以使用strj进行转换。您正在打开同一变量中的所有文件,我希望您正在使用for-then执行某些操作,然后关闭该文件。还有一件事,range对您的代码很有用。尽管如此,我还是建议您阅读python中的range vs xrange。在OP的尝试中,文件前缀和数字之间似乎没有下划线字符。您是对的,但他确实说文件的格式为名称\ 1.dat、名称\ 2.data等。
import re, glob, sys
def expand(x,lo=0,hi=sys.maxint): 
    return lo<=int(re.search(r'\d+', x).group(0))<=hi

# all files that match 'name1.dat' to 'name50.dat' inclusive
print [e for e in glob.glob('name[0-9]*.dat') if expand(e, 1, 50)]