在Python中读取多个文件并使用字符串str(i+1)重命名它们不起作用?

2024-10-01 22:43:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的循环,其中cfile以前被定义为'C_'

for i in range(15,25):
    infile = cfile + str(i+1) + '.txt'
    C + str(i+1) = np.loadtxt(infile, delimiter=',')

我在工作目录中有许多名为C_1C_2等的文件

我想将这些文件导入Python,并将它们命名为C_1C_2等,但我只想在特定范围内这样做。我不明白为什么str(i+1)不能工作


Tags: 文件in目录txtfor定义nprange
2条回答
cfile='C_'
C='What_'
H={}
for i in range(15,25):
    infile = cfile + str(i+1) + '.txt'
    #print("infile:",infile)
    k=C+str(i+1)
    H[k] = np.loadtxt(infile, delimiter=',')
    print(f"Your loaded file is here: H[{k}]")

    #PRINT OUT THE CONTENT OF THE FILE 
    print(H[k])
    
 

只需使用print(H[k])打印出每个文件的内容。或者print( H["What_24"] ),或者如果您更改变量C='C_}的字符串,那么您可以print(H["C_24"] )并查看存储在dict中的文件内容

为什么您想做的是一个错误:

C + str(i+1) = np.loadtxt(infile, delimiter=',')

因为C未定义。。。如果它被定义为C='What_you_want',你会得到:

'What_you_want'+str(i+1)  ->   'What_you_want'+'number' -> 'What_you_wantnumber' 

所以

'What_you_wantnumber'是驻留在variable C中的字符串

np.loadtxt(infile, delimiter=',')是一种以字符串形式返回文件内容的方法

所以您不能分配string=string。但你能做到

variable = string

例如:变量name = "flagello"ok

 print(name)  

输出:flagelo#即字符串

"flagello"="flagello"
  File "<stdin>", line 1
SyntaxError: can't assign to literal
"flagello"="silicio"
  File "<stdin>", line 1
SyntaxError: can't assign to literal
'flagello' == 'silico'  

输出:False

'flagello' == 'flagello'

输出:真

You can compare strings  but you can t assing a string to a string .

You can assign a string value  to a variable. 

但在这一刻,什么都没有。现在您获得了文件的内容,将每个文件的内容分配到dict广告中,打印dict的内容

如何重命名文件

import os
os.rename(r'C_21.txt',r'CCCP_21.txt')

在这种情况下,您不需要读取文件的内容来重命名它

只需使用old namenew name

您可以使用^{}打开具有指定模式的所有文件。尽管其模式遵循Unix准则,并且可能需要进一步筛选以满足您的规范:

import glob

files = glob.glob("C_[1-2][1-9].txt")

或者只是将所有正确的文件加载到dict中,因为这是创建变量数量可变的推荐方法

files = {f"C{i}": np.loadtxt(f"{cfile}{i}.txt", delimiter=',') for i in range(16,26)}

相关问题 更多 >

    热门问题