Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọcappend a list as a new row to the existing CSV file‘ and second way is ‘Append a dictionary as a new row to the existing CSV file.’

    Bàn luận

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    event.csv

    Để viết một tệp CSV, mô -đun CSV cung cấp hai nhà văn và tài liệu Dictriter khác nhau. Ở đây chúng tôi sẽ thảo luận về 2 cách để thực hiện nhiệm vụ này một cách hiệu quả. Đầu tiên sẽ là ‘nối một danh sách là một hàng mới vào tệp CSV hiện có‘ và cách thứ hai là ‘nối một từ điển như một hàng mới vào tệp CSV hiện có. existing CSV file using writer

    Đầu tiên, hãy để một cái nhìn về nội dung tệp CSV hiện tại của chúng tôi.append a list as a new row into an existing CSV file. 

    • Nối một hàng mới vào tệp CSV của người viết bằng cách sử dụng nhà văn
    • Hãy cùng xem cách sử dụng lớp nhà văn để nối một danh sách làm hàng mới vào tệp CSV hiện có. & NBSP;
    • Mở tệp CSV hiện tại của bạn trong chế độ Phụ lục Tạo đối tượng tệp cho tệp này.
    • Chuyển đối tượng tệp này cho csv.writer () và nhận một đối tượng nhà văn.

    Python3

    Chuyển danh sách như một đối số vào hàm writerow () của đối tượng nhà văn. (Nó sẽ thêm một danh sách dưới dạng hàng mới vào tệp CSV).

    Đóng đối tượng tệp

    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    5
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    6
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    7
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    8
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    6
    >>> f = open('workfile', 'w')
    >>> print f 
    
    0
    >>> f = open('workfile', 'w')
    >>> print f 
    
    1

    from csv

    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    0
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    1

    >>> f = open('workfile', 'w')
    >>> print f 
    
    2
    >>> f = open('workfile', 'w')
    >>> print f 
    
    7
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    2
    >>> f = open('workfile', 'w')
    >>> print f 
    
    9

    >>> f = open('workfile', 'w')
    >>> print f 
    
    2
    # read header automatically
    with open(myFile, "r") as f:
        reader = csv.reader(f)
        for header in reader:
            break
    
    # add row to CSV file
    with open(myFile, "a", newline='') as f:
        writer = csv.DictWriter(f, fieldnames=header)
        writer.writerow(myDict)
    
    1

    Output:

    Is

    >>> f = open('workfile', 'w')
    >>> print f 
    
    2
    >>> f = open('workfile', 'w')
    >>> print f 
    
    3
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    3
    >>> f = open('workfile', 'w')
    >>> print f 
    
    5append a dictionary as a new row into an existing CSV file. 

    • Nối một hàng mới vào tệp CSV hiện có bằng cách sử dụng dictwriter
    • Hãy cùng xem cách sử dụng lớp DictWriter để nối từ điển làm hàng mới vào tệp CSV hiện có. & NBSP;
    • Mở tệp CSV của bạn trong chế độ phụ lục Tạo đối tượng tệp cho tệp này.
    • Chuyển đối tượng tệp này cho csv.writer () và nhận một đối tượng nhà văn.

    Python3

    Chuyển danh sách như một đối số vào hàm writerow () của đối tượng nhà văn. (Nó sẽ thêm một danh sách dưới dạng hàng mới vào tệp CSV).

    Đóng đối tượng tệp

    df.to_csv('log.csv', mode='a', index=False, header=False)
    
    5
    df.to_csv('log.csv', mode='a', index=False, header=False)
    
    6
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    6
    df.to_csv('log.csv', mode='a', index=False, header=False)
    
    8
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    4

    from csv

    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    0
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    1

    # I like using the codecs opening in a with 
    field_names = ['latitude', 'longitude', 'date', 'user', 'text']
    with codecs.open(filename,"ab", encoding='utf-8') as logfile:
        logger = csv.DictWriter(logfile, fieldnames=field_names)
        logger.writeheader()
    
    # some more code stuff 
    
        for video in aList:
            video_result = {}                                     
            video_result['date'] = video['snippet']['publishedAt']
            video_result['user'] = video['id']
            video_result['text'] = video['snippet']['description'].encode('utf8')
            logger.writerow(video_result) 
    
    5
    df.to_csv('log.csv', mode='a', index=False, header=False)
    
    6
    pose_x = 1 
    pose_y = 2
    
    with open('path-to-your-csv-file.csv', mode='a') as file_:
        file_.write("{},{}".format(pose_x, pose_y))
        file_.write("\n")  # Next line.
    
    4
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    1
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    6
    df.to_csv('log.csv', mode='a', index=False, header=False)
    
    8
    pose_x = 1 
    pose_y = 2
    
    with open('path-to-your-csv-file.csv', mode='a') as file_:
        file_.write("{},{}".format(pose_x, pose_y))
        file_.write("\n")  # Next line.
    
    4
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    3from3

    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    5
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    6
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    7
    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    8
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    6
    >>> f = open('workfile', 'w')
    >>> print f 
    
    0
    >>> f = open('workfile', 'w')
    >>> print f 
    
    1

    Is

    >>> f = open('workfile', 'w')
    >>> print f 
    
    2csv 8
    pose_x = 1 
    pose_y = 2
    
    with open('path-to-your-csv-file.csv', mode='a') as file_:
        file_.write("{},{}".format(pose_x, pose_y))
        file_.write("\n")  # Next line.
    
    0
    >>> f = open('workfile', 'w')
    >>> print f 
    
    9

    >>> f = open('workfile', 'w')
    >>> print f 
    
    2
    # read header automatically
    with open(myFile, "r") as f:
        reader = csv.reader(f)
        for header in reader:
            break
    
    # add row to CSV file
    with open(myFile, "a", newline='') as f:
        writer = csv.DictWriter(f, fieldnames=header)
        writer.writerow(myDict)
    
    1

    Output:

    >>> f = open('workfile', 'w')
    >>> print f 
    
    2
    >>> f = open('workfile', 'w')
    >>> print f 
    
    3
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    3
    >>> f = open('workfile', 'w')
    >>> print f 
    
    5


    282

    Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
    Learn more.

    Tôi đang cố gắng thêm một hàng mới vào tệp CSV cũ của tôi. Về cơ bản, nó được cập nhật mỗi khi tôi chạy tập lệnh Python.

    Ngay bây giờ tôi đang lưu trữ các giá trị hàng CSV cũ trong danh sách và sau đó xóa tệp CSV và tạo lại với giá trị danh sách mới.

    Tôi muốn biết có cách nào tốt hơn để làm điều này.

    Gino Mempin

    21.3K25 Huy hiệu vàng87 Huy hiệu bạc115 Huy hiệu đồng25 gold badges87 silver badges115 bronze badges

    hỏi ngày 2 tháng 3 năm 2010 lúc 14:23Mar 2, 2010 at 14:23

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    with open('document.csv','a') as fd:
        fd.write(myCsvRow)
    

    Mở một tệp với tham số

    >>> f = open('workfile', 'w')
    >>> print f 
    
    0 cho phép bạn nối vào cuối tệp thay vì chỉ cần ghi đè nội dung hiện có. Hãy thử điều đó.

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    David

    Huy hiệu vàng 114K2424 gold badges370 silver badges326 bronze badges

    Đã trả lời ngày 2 tháng 3 năm 2010 lúc 14:25Mar 2, 2010 at 14:25

    Brettkellybrettkellybrettkelly

    27.1k8 Huy hiệu vàng53 Huy hiệu bạc70 Huy hiệu đồng8 gold badges53 silver badges70 bronze badges

    2

    Tôi thích giải pháp này bằng cách sử dụng mô -đun

    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    04 từ thư viện tiêu chuẩn và câu lệnh
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    05 để tránh mở tệp.

    Điểm quan trọng là sử dụng

    >>> f = open('workfile', 'w')
    >>> print f 
    
    0 để nối thêm khi bạn mở tệp.

    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    

    Nếu bạn đang sử dụng Python 2.7, bạn có thể trải nghiệm các dòng mới thừa trong Windows. Bạn có thể cố gắng tránh chúng bằng cách sử dụng

    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    07 thay vì
    >>> f = open('workfile', 'w')
    >>> print f 
    
    0, tuy nhiên, điều này sẽ khiến bạn thể loại: một đối tượng giống như byte là bắt buộc, không phải 'str' trong Python và CSV trong Python 3.6. Thêm
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    09, như Natacha gợi ý, sẽ khiến bạn không tương thích ngược giữa Python 2 và 3.

    Đã trả lời ngày 6 tháng 6 năm 2016 lúc 9:46Jun 6, 2016 at 9:46

    G mg mG M

    Phim huy hiệu vàng 18,9k1010 gold badges77 silver badges79 bronze badges

    3

    Dựa trên câu trả lời của @G M và chú ý đến cảnh báo của @John La Rooy, tôi đã có thể nối một hàng mới mở tệp trong

    >>> f = open('workfile', 'w')
    >>> print f 
    
    0Mode.

    Ngay cả trong Windows, để tránh vấn đề mới, bạn phải khai báo nó là

    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    09.

    Bây giờ bạn có thể mở tệp trong

    >>> f = open('workfile', 'w')
    >>> print f 
    
    0Mode (không có b).

    import csv
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    

    Tôi đã không thử với người viết thông thường (không có dict), nhưng tôi nghĩ rằng nó cũng sẽ ổn.

    Đã trả lời ngày 21 tháng 6 năm 2018 lúc 16:47Jun 21, 2018 at 16:47

    NatachanatachaNatacha

    1.05716 huy hiệu bạc20 Huy hiệu đồng16 silver badges20 bronze badges

    0

    Bạn có đang mở tệp với chế độ 'A' thay vì 'W' không?

    Xem đọc và ghi các tập tin trong tài liệu Python

    7.2. Đọc và ghi tệp

    Open () Trả về một đối tượng tệp và được sử dụng phổ biến nhất với hai đối số: mở (tên tệp, chế độ).

    >>> f = open('workfile', 'w')
    >>> print f 
    

    Đối số đầu tiên là một chuỗi chứa tên tệp. Đối số thứ hai là một chuỗi khác chứa một vài ký tự mô tả cách sử dụng tệp. Chế độ có thể là 'r' khi tệp sẽ chỉ được đọc, 'w' chỉ để viết (một tệp hiện có có cùng tên sẽ bị xóa) và 'A' mở tệp để nối thêm; Bất kỳ dữ liệu nào được ghi vào tệp được tự động thêm vào cuối. 'R+' mở tệp cho cả đọc và viết. Đối số chế độ là tùy chọn; 'R' sẽ được giả định nếu nó bị bỏ qua.

    Trên Windows, 'B' được thêm vào chế độ sẽ mở tệp ở chế độ nhị phân, do đó cũng có các chế độ như 'RB', 'WB' và 'R+B'. Python trên Windows tạo ra sự khác biệt giữa các tệp văn bản và nhị phân; Các ký tự cuối dòng trong các tệp văn bản được tự động thay đổi một chút khi dữ liệu được đọc hoặc viết. Việc sửa đổi hậu trường này đối với dữ liệu tệp là tốt cho các tệp văn bản ASCII, nhưng nó sẽ tham nhũng dữ liệu nhị phân như thế trong các tệp JPEG hoặc EXE. Hãy rất cẩn thận để sử dụng chế độ nhị phân khi đọc và viết các tệp đó. Trên Unix, nó không bị tổn thương khi nối 'B' vào chế độ, vì vậy bạn có thể sử dụng nó độc lập với nền tảng cho tất cả các tệp nhị phân.

    Đã trả lời ngày 2 tháng 3 năm 2010 lúc 14:26Mar 2, 2010 at 14:26

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    John La Rooyjohn La RooyJohn La Rooy

    286K51 Huy hiệu vàng359 Huy hiệu bạc499 Huy hiệu đồng51 gold badges359 silver badges499 bronze badges

    2

    Nếu tệp tồn tại và chứa dữ liệu, thì có thể tự động tạo tham số

    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    13 cho
    import csv   
    fields=['first','second','third']
    with open(r'name', 'a') as f:
        writer = csv.writer(f)
        writer.writerow(fields)
    
    14:

    # read header automatically
    with open(myFile, "r") as f:
        reader = csv.reader(f)
        for header in reader:
            break
    
    # add row to CSV file
    with open(myFile, "a", newline='') as f:
        writer = csv.DictWriter(f, fieldnames=header)
        writer.writerow(myDict)
    

    Đã trả lời ngày 6 tháng 2 năm 2019 lúc 11:52Feb 6, 2019 at 11:52

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    Ron Kalianron KalianRon Kalian

    3,0042 huy hiệu vàng14 Huy hiệu bạc22 Huy hiệu đồng2 gold badges14 silver badges22 bronze badges

    Nếu bạn sử dụng gấu trúc, bạn có thể nối các khung dữ liệu của mình vào tệp CSV hiện có theo cách này:

    df.to_csv('log.csv', mode='a', index=False, header=False)
    

    Với Mode = 'A', chúng tôi đảm bảo rằng chúng tôi nối thêm, thay vì ghi đè và với tiêu đề = Sai, chúng tôi đảm bảo rằng chúng tôi chỉ nối các giá trị của các hàng DF, thay vì tiêu đề + giá trị.

    Đã trả lời ngày 13 tháng 10 năm 2020 lúc 14:21Oct 13, 2020 at 14:21

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    Anna Gelleranna GellerAnna Geller

    1.1406 huy hiệu bạc7 Huy hiệu đồng6 silver badges7 bronze badges

    Tôi sử dụng cách tiếp cận sau để nối một dòng mới trong tệp .csv:

    pose_x = 1 
    pose_y = 2
    
    with open('path-to-your-csv-file.csv', mode='a') as file_:
        file_.write("{},{}".format(pose_x, pose_y))
        file_.write("\n")  # Next line.
    

    [NOTE]:NOTE]:

    • import csv   
      fields=['first','second','third']
      with open(r'name', 'a') as f:
          writer = csv.writer(f)
          writer.writerow(fields)
      
      15 là chế độ nối.

    Đã trả lời ngày 18 tháng 7 năm 2019 lúc 18:37Jul 18, 2019 at 18:37

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    2

    # I like using the codecs opening in a with 
    field_names = ['latitude', 'longitude', 'date', 'user', 'text']
    with codecs.open(filename,"ab", encoding='utf-8') as logfile:
        logger = csv.DictWriter(logfile, fieldnames=field_names)
        logger.writeheader()
    
    # some more code stuff 
    
        for video in aList:
            video_result = {}                                     
            video_result['date'] = video['snippet']['publishedAt']
            video_result['user'] = video['id']
            video_result['text'] = video['snippet']['description'].encode('utf8')
            logger.writerow(video_result) 
    

    Georgy

    10,9k7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 bronze badges

    Đã trả lời ngày 15 tháng 3 năm 2018 lúc 20:57Mar 15, 2018 at 20:57

    Hướng dẫn how do i write to an existing csv file in python? - làm cách nào để ghi vào tệp csv hiện có trong python?

    2

    Làm cách nào để viết dữ liệu trong một tệp CSV hiện có trong Python?

    Mở tệp CSV của bạn trong chế độ phụ lục Tạo đối tượng tệp cho tệp này.Chuyển đối tượng tệp và danh sách các tên cột cho DictWriter () bạn sẽ nhận được một đối tượng của DictWriter.Truyền từ điển làm đối số cho hàm writerow () của dictWriter (nó sẽ thêm một hàng mới vào tệp CSV).

    Bạn có thể viết trực tiếp vào tệp CSV trong Python không?

    Trong Python, bạn có thể sử dụng hàm Writerows () của Writer () để ghi nhiều hàng vào tệp CSV trên cùng một lần.use the CSV writer's writerows() function to write multiple rows into a CSV file on the same go.

    Làm cách nào để thêm dữ liệu vào một tệp hiện có trong Python?

    Mở tệp ở chế độ phụ lục và ghi vào nó Mở tệp trong chế độ 'A' và ghi vào nó bằng phương thức write ().Phương thức ghi bên trong (), một chuỗi "văn bản mới" được truyền. Open the file in append 'a' mode, and write to it using write() method. Inside write() method, a string "new text" is passed.

    Bạn có thể đọc và ghi vào cùng một tệp CSV trong Python không?

    Không thể mở cùng một tệp trong hai chế độ khác nhau trong Python.Bạn phải phát hành một trong các con trỏ tệp với file_name.đóng () trước khi mở tệp ở chế độ khác!. You have to release one of the file pointers with file_name. close() before opening the file in another mode!