Hướng dẫn append into csv file python - nối vào tệp csv python

281

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.2K25 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

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 đó.

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 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

Phim huy hiệu vàng 18.8k1010 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 '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.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

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]
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

Ron Kalianron KalianRon Kalian

2.9942 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

Anna Gelleranna GellerAnna Geller

1.1206 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

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

2

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

Mở tệp CSV của chúng tôi ở chế độ Phụ lục và tạo đối tượng tệp. Chuyển đối tượng tệp này cho CSV. Writer [], chúng ta có thể nhận được một đối tượng lớp nhà văn. Đối tượng nhà văn này có một hàm chức năng [], chuyển danh sách cho nó và nó sẽ thêm nội dung của danh sách làm hàng mới trong tệp CSV được liên kết.

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?

Dưới đây là các bước để nối Pandas DataFrame vào tệp CSV hiện có ...
Bước 1: Xem tệp CSV hiện có.Đầu tiên, hãy tìm tệp CSV trong đó chúng tôi muốn nối lại DataFrame.....
Bước 2: Tạo DataFrame mới để nối thêm.Bây giờ hãy nói rằng chúng tôi muốn thêm nhiều người chơi vào tệp CSV này.....
Bước 3: Đưa dữ liệu dữ liệu vào tệp CSV hiện có ..

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.

Bài Viết Liên Quan

Chủ Đề