在Python 2.7中使用变量进行迭代
嗨,专家们,我想做一个循环,读取一个文本文件,然后用以下代码输出(8)个文本文件:在Python 2.7中使用变量进行迭代,python,file,loops,python-2.7,Python,File,Loops,Python 2.7,嗨,专家们,我想做一个循环,读取一个文本文件,然后用以下代码输出(8)个文本文件: for i in range(1,9): with open(inputgui, 'r') as input1: junkinfo = [next(input1) for dummy in range(22)] with open(output, 'w') as output1: for line in input1:
for i in range(1,9):
with open(inputgui, 'r') as input1:
junkinfo = [next(input1) for dummy in range(22)]
with open(output, 'w') as output1:
for line in input1:
columns = line.strip().split()
output1.write('{:8}{:8}\n'.format(columns[1], columns[i+1]))
请注意,变量
inputgui
是来自用户的文本变量,而输出是来自用户的文本变量。例如,gui中的用户将选择'C:/Data.txt'
,并希望命名输出并迭代8次以生成'C:/NewData1.txt'
,'C:/NewData2.txt'
,等等。如何格式化变量输出以迭代或最有效的方式?假设用户提供了扩展名为.txt的文件名,则可以执行以下操作:
for i in range(1,9):
with open(inputgui, 'r') as input1:
junkinfo = [next(input1) for dummy in range(22)]
newOutput = output[:-4] + str(i) + output[-4:]
with open(newOutput, 'w') as output1:
for line in input1:
columns = line.strip().split()
output1.write('{:8}{:8}\n'.format(columns[1], columns[i+1]))
如果扩展名未知,则需要找到扩展名所在的位置。是基于其位置进行的和拼接其他答案没有提到它,但您可以通过使用列表
功能使代码更高效、更符合Python
# Change
junkinfo = [next(input1) for dummy in range(22)]
# To
junkinfo = list(input1)[:22]
# or even better...
junkinfo = list(input1)
如果不需要将其修剪为22个元素,可以使用最后一个元素。以下是如何为任意文件扩展名创建输出文件名:
output_file = (str(i) + '.').join(output.rsplit('.', 1))
例如:
>>> output = r'C:\Some.File.Name.data'
>>> for i in range(1, 4):
... print (str(i) + '.').join(output.rsplit('.', 1))
...
C:\Some.File.Name1.data
C:\Some.File.Name2.data
C:\Some.File.Name3.data
谢谢,这很有道理。我意识到我把字符串和整数组合在一起,这在很大程度上是错误的。