2015-05-05 50 views
-1

我得到了兩個項目列表,其中一個是文本,一個是數字。我想一起打印它們,像這樣來自不同文件打印的多行

a 1 
b 2 
c 3 

等等。但這裏是一塊我的代碼:

f = open("file1","r+") 
VALORINUMAR=f.readlines() 
g=open("test.txt",'r+') 
VALORITEXT=g.readlines() 
a,k=0 
for a,k in range(0,50): 
print(VALORITEXT[a],VALORITEXT[k]) 

我得到這個錯誤

<module> 
a,k=0 
TypeError: 'int' object is not iterable 
+0

這顯然不是一件你_real_代碼,因爲它缺少至少一個'「'和意志只是一個'SyntaxError',請發佈一個[最小的,完整的,可驗證的例子](http://stackoverflow.com/help/mcve) – abarnert

+0

同時,在你的_real_代碼中,你正在做一些你在這個例子中沒有做,比如將循環變量重新分配給文件對象(在這段代碼中'k ='內'k = g'的等價物),或者只是使用了錯誤的變量(比如'liniute [g ]'而不是'liniute [k]')但是,由於你發佈的代碼並不存在這個錯誤,所以我們不能告訴你確切地說它在你的真實代碼中的位置。 – abarnert

+0

我發佈了在第一部分中工作的部分代碼,並且我說我希望它在同一行上打印,第一部分打印第一個文件,然後打印第二個。我不知道如何合併印刷在一起。我四處搜尋,看到你可以使用兩個變量進行循環,但它不適合我。對於混淆,很抱歉 – boxxybabee

回答

1

zip將會有用。

f = open("file1", "r") 
g = open("test.txt", "r") 
for fline, gline in zip(f, g): 
    print(fline.strip(), gline.strip()) 

(帽尖到mpolednik,因爲這只是他的想法的簡化。)

+0

謝謝你的幫助! – boxxybabee

+0

即使您實際上不知道「zip」的功能,它也具有運動部件很少的好處。 – chepner

1

如果liniute[k]被撫養TypeError: list indices must be integers, not _io.TextIOWrapper,這意味着k是一個文件對象,而不是一個整數。

您發佈的代碼實際上並沒有這樣做。如果你真正的代碼做,你幾乎可以肯定做的兩兩件事之一:

for k in range (0,50): 
    print(liniute[g]) # oops, g instead of k 

for k in range (0,50): 
    # long complicated body that does lots of stuff... 
    k = open("otherfile") # oops, reused k to mean two things 
    # ... 
    print(liniute[k]) 

使用有意義的變量名稱,而不是隨機的一個個字母的名字,使象這樣的錯誤了很多困難創造,也更容易了很多調試。


同時,該代碼:

for a, k in range (0,50): 
print(lines[a],liniute[k]) 

...確實有兩個錯誤的,但仍然沒有錯誤您發佈。

首先,有一個明顯的IndentationError

二,range(0, 50)迭代整數,而不是整數對,所以你不能指定每一個到a, k。這就像寫作a, k = 1

但是你真的不需要兩個單獨的變量。只需使用相同的變量兩次:

for a in range(0, 50): 
    print(lines[a], liniute[a]) 
1

這似乎是你想要做的只是配對文件。如果是這樣,發電機派上用場。

def text_generator(): 
    with open('secondfile.txt', 'r+') as f: 
     for line in f: 
      yield line.rstrip('\n') 

with open('firstfile.txt', 'r+') as f: 
    generator = text_generator() 
    for fline in f: 
     print(fline.rstrip('\n'), next(generator)) 

額外的護理需要用換行採取:這兩個文件很可能包含這些和打印隱含還增加了一個。因此我們必須去掉這些才能獲得很好的輸出。

相關問題