2017-10-09 42 views
0

我有多個包含多個.tsv文件的存檔。我想要做的是提取這些文件中的一部分,並創建一個新的.tsv文件來合併/連接我選擇的文件。儘管如此,我遇到的唯一解決方案是合併它們,但是與寫入/ t而不是正確切換。這是我迄今爲止所嘗試的:從存檔中連接tsv文件Python

for numbers in list: 
     file_name = numbers 
     zip_ref = zipfile.ZipFile(archive_name, 'r') 
     file_to_concat = zip_ref.read(file_name) 
     model_file.write(str(file_to_concat)) 

最後,在model_file中,我將有文本充滿'\ t'並且沒有選項卡。 我想我應該在某處使用'import csv'?我不知道該怎麼做

+0

您可能會喜歡這個熊貓圖書館。 – Aaron

+0

你是什麼意思y「正確掛牌」? '\ t'是[一個適當的選項卡](https://stackoverflow.com/questions/4488570/how-do-i-write-a-tab-in-python) –

+0

我的意思是它寫道「\ t 「在文件中而不是標籤 – Gimv13

回答

0

以下操作將取出一個文件夾中的所有.zip文件,逐個提取文件作爲TSV文件,並將它們寫入組合輸出TSV文件,其名稱與.zip相同文件:

import zipfile 
import csv 
import glob 

for zip_filename in glob.glob('*.zip'): 
    csv_filename = "{}.csv".format(os.path.splitext(os.path.basename(zip_filename))[0]) 
    print "{} -> {}".format(zip_filename, csv_filename) 

    with zipfile.ZipFile(zip_filename, 'r') as zip_ref, open(csv_filename, 'wb') as f_csv: 
     csv_writer = csv.writer(f_csv, delimiter='\t') 

     for zip_member in zip_ref.namelist(): 
      print " {}".format(zip_member) 
      with zip_ref.open(zip_member) as f_zip: 
       csv_writer.writerows(csv.reader(f_zip, delimiter='\t'))