Xem thảo luận
Cải thiện bài viết
Lưu bài viết
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
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'}]
5import 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'}]
6import 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'}]
7import 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'}]
8import 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
1from
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
7import 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]
1Output:
Is
>>> f = open['workfile', 'w']
>>> print f
2>>> f = open['workfile', 'w']
>>> print f
3import 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]
5df.to_csv['log.csv', mode='a', index=False, header=False]
6import csv
fields=['first','second','third']
with open[r'name', 'a'] as f:
writer = csv.writer[f]
writer.writerow[fields]
6df.to_csv['log.csv', mode='a', index=False, header=False]
8import 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'}]
4from
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]
5df.to_csv['log.csv', mode='a', index=False, header=False]
6pose_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.
4import 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'}]
1import csv
fields=['first','second','third']
with open[r'name', 'a'] as f:
writer = csv.writer[f]
writer.writerow[fields]
6df.to_csv['log.csv', mode='a', index=False, header=False]
8pose_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.
4import 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'}]
3from
3import 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'}]
5import 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'}]
6import 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'}]
7import 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'}]
8import 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
1Is
>>> f = open['workfile', 'w']
>>> print f
2csv
8pose_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]
1Output:
>>> f = open['workfile', 'w']
>>> print f
2>>> f = open['workfile', 'w']
>>> print f
3import 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
5282
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
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 đó.
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à
09.import csv fields=['first','second','third'] with open[r'name', 'a'] as f: writer = csv.writer[f] writer.writerow[fields]
Bây giờ bạn có thể mở tệp trong
0Mode [không có b].>>> f = open['workfile', 'w'] >>> print f
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]
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
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
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]:
15 là chế độ nối.import csv fields=['first','second','third'] with open[r'name', 'a'] as f: writer = csv.writer[f] writer.writerow[fields]
Đã 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