2017-07-28 62 views
0

我沒有任何想法如何更新我的代碼以下的級別,我可以寫入更改的行數量 - 在CSV中 - 文件名稱。寫行數到文件名

我已經做了一些與計數和行的東西,但它是有道理的。

有人可以給我一些提示

import csv 
import glob 
import os 

rows = [] 

for in_csv in glob.glob('C:/code/convert/Image/In/*.csv'): 
    print in_csv 

    with open(in_csv, 'rb') as f_input: 
     reader = csv.reader(f_input) 

     try: 
      all = [] 
      row = next(reader) 
      row.insert(0, 'l_panoramic') 
      all.append(row) 

      for k, row in enumerate(reader): 
       all.append(['l_panoramic_{:06}'.format(k)] + row) 

      name, ext = os.path.splitext(in_csv) 

      with open("{}_{}{}".format(name, len(rows), ext), 'wb') as f_output: 
       writer = csv.writer(f_output, delimiter = ';') 
       writer.writerows(all) 
       print " {} lines found".format(len(rows)) 
     except StopIteration as e: 
      print " No lines found" 
+0

_to我可以寫入已更改行的數量 - 在CSV中 - 文件名稱_ 更改的行的數量是多少? –

+0

你想在第二個文件中寫入第一行的行數嗎? –

+0

我想在Out中寫入新文件。但是以文件名。所以它需要文件名 - 170728.csv(在'In'文件夾中)和'Out'文件夾170728_1915.csv(CSV中有1915行,這意味着在我的情況下是1915全景圖) –

回答

0

這可以使用glob庫中創建您的CSV文件列表來完成。

import csv 
import glob 
import os 

rows = [] 

for in_csv in glob.glob('a*.csv'): 
    print in_csv 

    with open(in_csv, 'rb') as f_input: 
     reader = csv.reader(f_input) 

     try: 
      row = next(reader) 
      row.insert(0, 'L_panoramic') 
      rows.append(row) 

      for k, row in enumerate(reader): 
       rows.append(['l_panoramic_{:06}'.format(k)] + row) 

      name, ext = os.path.splitext(in_csv) 

      with open("{}_{}{}".format(name, len(rows), ext), 'wb') as f_output:   
       writer = csv.writer(f_output, delimiter = ';') 
       writer.writerows(rows) 
       print " {} lines found".format(len(rows)) 
     except StopIteration as e: 
      print " No lines found" 

您已經創建行的列表寫入:使用format()聲明如下使用splitext()拿那麼現有的文件名,並把它分割成一個文件名和擴展名,行數可以很容易地添加,所以一旦這個列表完成,你就會知道有多少行。有了這個,你可以用添加到名稱的行數打開輸出文件,並將所有行寫入它。

+0

嗨,好吧我我認爲我得到了你要去的地方,但我在哪裏離開我的In和Output文件夾? –

+0

爲了簡單起見,我只是簡化了邏輯,現在應該只是把文件寫回到同一個文件夾中。使用'os.path.join()'預先添加一個不同的輸出文件夾(這比使用字符串連接要好,因爲它正確處理文件分隔符) –

+0

好吧,我明白了,出現錯誤:TypeError:'newline'這個函數是一個無效的關鍵字參數 –