2013-06-25 195 views
-4

我怎樣才能達到這與python?輸入和輸出文件python

開發的代碼將採用兩個輸入文件,這兩個文件由按字母順序排序的ASCII字符串以相同的順序組成,並將生成兩個輸出文件 - 第一個輸出文件應該只包含在第一個輸入文件中找到的字符串,但不在第二個;第二個輸出文件 - 在第二個輸入文件中找到的字符串,但不在第一個輸入文件中。

+0

聽起來像'comm'工作... –

+6

I t看起來像你希望我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出和實際獲得的輸出(控制檯輸出,堆棧跟蹤,編譯器錯誤 - 無論是適用)。您提供的細節越多,您可能會收到的答案就越多。 –

+0

@MartijnPieters,受「關閉戰爭」的啓發?完全同意。 – J0HN

回答

2

僞代碼:

open both input files and both output files, 
read a line from each input files into a & b, 
while len(a) > 0 or len(b) > 0: 
if both are the same output to samefile and read next line from both files, 
if a > b: 
    output b to diff file 
    read next b 
else: # a < b 
    output a to diff file 
    read next a 
close all the files 

編碼是留給OP。

-1

沒有爲你做太多的設計(這裏的人不會爲你解決問題),我會說在這裏字典是一個不錯的選擇。關鍵可能是單詞和條目從它讀取的文件。這本字典那麼可以很容易地識別哪些話是在一個文件只發現

1

您可以使用組操作

##file1.txt 
##----------------- 
##a new thing 
##this is data 
##and more data 

##file2.txt 
##-------------- 
##another new thing 
##this is data 
##and more data 

infile1 = open('file1.txt', 'r') 
infile2 = open('file2.txt', 'r') 

file1_lines = infile1.readlines() 
file2_lines = infile2.readlines() 

out_lines_1 = set(file1_lines) - set(file2_lines) 
out_lines_2 = set(file2_lines) - set(file1_lines) 

outfile1 = open('outfile1.txt', 'w') 
outfile2 = open('outfile2.txt', 'w') 

outfile1.writelines(out_lines_1) 
outfile2.writelines(out_lines_2) 

infile1.close() 
infile2.close() 
outfile1.close() 
outfile2.close() 
+0

雖然這個答案在技術上可能是正確的,但它的作者正在爲OP做所有的工作,鼓勵這樣的壞問題。 –

0

這工作:

from collections import Counter 
with open(fn1,'r') as f1: 
    c1=Counter(e.strip() for e in f1) 

with open(fn2,'r') as f2: 
    c2=Counter(e.strip() for e in f2) 

col1=c1-c2 
col2=c2-c1 
col3=c1 & c2 
print 'Only in first file:',','.join(sorted(col1.elements())) 
print 'Only in second file:',','.join(sorted(col2.elements())) 
print 'In both files:',','.join(sorted(col3.elements())) 

如果你把兩個示例它打印Wikipedia's entry on comm文件:

Only in first file: eggplant 
Only in second file: banana,zucchini 
In both files: apple,banana 
+0

儘管這個答案在技術上可能是正確的,但它的作者正在爲OP做所有的工作,鼓勵這樣的壞問題。 –