Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python 2.7中使用变量进行迭代_Python_File_Loops_Python 2.7 - Fatal编程技术网

在Python 2.7中使用变量进行迭代

在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:

嗨,专家们,我想做一个循环,读取一个文本文件,然后用以下代码输出(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:
                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

谢谢,这很有道理。我意识到我把字符串和整数组合在一起,这在很大程度上是错误的。