Hướng dẫn can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

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.

Hướng dẫn can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

Gino Mempin

21K24 Huy hiệu vàng86 Huy hiệu bạc114 Huy hiệu đồng24 gold badges86 silver badges114 bronze badges

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

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

Mở một tệp với tham số 'a' 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 can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

David

Huy hiệu vàng 114K2424 gold badges368 silver badges323 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 csv 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)
0 để tránh mở tệp.

Điểm quan trọng là sử dụng 'a' để 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. Tuy nhiên, 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)
2 thay vì 'a', 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)
4, 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

18.7K10 Huy hiệu vàng76 Huy hiệu bạc79 Huy hiệu đồng10 gold badges76 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 'a'Mode.

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)
4.

Bây giờ bạn có thể mở tệp trong 'a'Mode (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.04716 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 can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

John La Rooyjohn La RooyJohn La Rooy

286K51 Huy hiệu vàng358 Huy hiệu bạc499 Huy hiệu đồng51 gold badges358 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)
8 cho
import csv   
fields=['first','second','third']
with open(r'name', 'a') as f:
    writer = csv.writer(f)
    writer.writerow(fields)
9:

# 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 can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

Ron Kalianron KalianRon Kalian

2.9742 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 can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

Anna Gelleranna GellerAnna Geller

1.1106 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
    
    with open(r'names.csv', 'a', newline='') as csvfile:
        fieldnames = ['This','aNew']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        writer.writerow({'This':'is', 'aNew':'Row'})
    
    0 là chế độ phụ lục.

Đã 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 can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

Benyamin Jafaribenyamin JafariBenyamin Jafari

23.8K21 Huy hiệu vàng114 Huy hiệu bạc135 Huy hiệu đồng21 gold badges114 silver badges135 bronze badges

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,8K7 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 can you append to a csv file in python? - bạn có thể nối vào tệp csv trong python không?

2

Chúng ta có thể nối vào tệp CSV không?

Lắp đặt DataFrame có nghĩa là thêm các hàng dữ liệu vào các tệp đã có.Để thêm một hàng DataFrame khôn ngoan vào tệp CSV hiện có, chúng tôi có thể viết DataFrame vào tệp CSV ở chế độ nối bằng tham số A sử dụng hàm pandas to_csv ().we can write the dataframe to the CSV file in append mode by the parameter a using the pandas to_csv() function.

Làm cách nào để cập nhật tệp CSV hiện có trong Python?

Approach..
Nhập mô -đun ..
Mở tệp CSV và đọc dữ liệu của nó ..
Tìm cột để được cập nhật ..
Cập nhật giá trị trong tệp CSV bằng hàm_csv () ..

Làm thế nào để bạn nối dữ liệu vào tệp CSV trong Python bằng gấu trúc?

Bạn có thể chỉ định chế độ ghi Python trong chức năng Pandas TO_CSV.Để nối thêm nó là 'A'.Chế độ mặc định là 'W'.

Python có thể ghi vào tệp CSV không?

Class DictWriter () có thể được sử dụng để ghi vào tệp CSV từ từ điển Python.Ở đây, tệp - tệp CSV nơi chúng tôi muốn viết.Tên trường - Một đối tượng danh sách nên chứa các tiêu đề cột chỉ định thứ tự trong đó dữ liệu nên được ghi trong tệp CSV.. Here, file - CSV file where we want to write to. fieldnames - a list object which should contain the column headers specifying the order in which data should be written in the CSV file.