簡體   English   中英

將除第一行以外的所有內容復制到新的 csv 文件 python

[英]copy all except first row into new csv file python

我每天生成幾個 csv 文件,我正在嘗試編寫一個 python 腳本,它將打開每個 csv 文件,一個接一個,將 csv 重寫到新位置並填寫文件名中的任務信息。

我已經能夠拼湊出單獨的 python 腳本來完成大部分工作,但我遇到了麻煩。

每個 CSV 都有一個標准文件名:“Number_Name_Location.csv”

第 1 行有一個 header 標記每一列、名稱、位置、日期等,並且每個 csv 可以有 n 個預填充行。

我試圖自動化的是以下步驟:

  1. 打開“/ToParse”文件夾中的 1st.csv
  2. 填寫所有行的剩余詳細信息,這些詳細信息是從文件名本身收集的。
    • A 列:數字
    • B 列:解析日期
    • k 列:姓名
    • L 列:位置
  3. 在文件夾“/Parsed”中寫入一個新的 csv w
  4. 繼續解析next.csv直到no.csv在“/ToParse”文件夾中
  5. 將所有原始解析文件移動到 /Parsed/Original

下面是拼湊的代碼,它覆蓋了 header 行,我如何調整代碼以忽略它正在打開的 csv 中的第一行,只從第 1 行開始復制

import glob
import csv
from datetime import date

with open('Parsed/output.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)

    for filename in glob.glob('*.csv'):
        with open(filename, newline='') as f_input:
            csv_input = csv.reader(f_input)
            filename_parts = filename.split("_")
            #print(filename_parts[0]) 

            for row in csv_input:
                row[0] = filename_parts[0]
                row[1] = date.today()
                row[10] = filename_parts[1]
                row[11] = filename_parts[2]
                csv_output.writerow(row)

open(filename, newline='')對我來說似乎很奇怪。 你確定要newline=''嗎?

您可以通過在 for 循環之前手動執行f_input.readline()來跳過第一行。 這將讀取(=跳過)第一行,for 循環將從下一行開始。

或者您可以for row in csv_input[1:]但我不確定是否可行並且現在無法對其進行測試。 [1:]表示跳過任何類似列表的變量中的第一項(正式名稱: Iterable ))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM