我怎樣才能達到這與python?輸入和輸出文件python
開發的代碼將採用兩個輸入文件,這兩個文件由按字母順序排序的ASCII字符串以相同的順序組成,並將生成兩個輸出文件 - 第一個輸出文件應該只包含在第一個輸入文件中找到的字符串,但不在第二個;第二個輸出文件 - 在第二個輸入文件中找到的字符串,但不在第一個輸入文件中。
我怎樣才能達到這與python?輸入和輸出文件python
開發的代碼將採用兩個輸入文件,這兩個文件由按字母順序排序的ASCII字符串以相同的順序組成,並將生成兩個輸出文件 - 第一個輸出文件應該只包含在第一個輸入文件中找到的字符串,但不在第二個;第二個輸出文件 - 在第二個輸入文件中找到的字符串,但不在第一個輸入文件中。
僞代碼:
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。
沒有爲你做太多的設計(這裏的人不會爲你解決問題),我會說在這裏字典是一個不錯的選擇。關鍵可能是單詞和條目從它讀取的文件。這本字典那麼可以很容易地識別哪些話是在一個文件只發現
您可以使用組操作
##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()
雖然這個答案在技術上可能是正確的,但它的作者正在爲OP做所有的工作,鼓勵這樣的壞問題。 –
這工作:
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
儘管這個答案在技術上可能是正確的,但它的作者正在爲OP做所有的工作,鼓勵這樣的壞問題。 –
聽起來像'comm'工作... –
I t看起來像你希望我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出和實際獲得的輸出(控制檯輸出,堆棧跟蹤,編譯器錯誤 - 無論是適用)。您提供的細節越多,您可能會收到的答案就越多。 –
@MartijnPieters,受「關閉戰爭」的啓發?完全同意。 – J0HN