30/09/2018, 18:05
Lỗi TypeError khi đọc ghi file
Mọi người cho mình hỏi,mình có 1 cái function như ở dưới nhưng nó không chạy được.Cho hỏi cần sửa thế nào.
def pretty_printing(dict):
infile = open(file,"r")
outfile = open("example.txt","w")
order_keys = dict.keys()
order_keys.sort()
for key in order_keys:
print key, dict[key]
outfile.close()
infile.close()
#test
a_file=raw_input("enter your file:")
pretty_printing(a_file)
Bài liên quan
có ai có cách fix ko
Thông báo lỗi gì nhỉ? Câu hỏi này mơ hồ quá.
nó nói:infile = open(file,“r”)
TypeError: coercing to Unicode: need string or buffer, type found
Hàm của bạn đặt tham số là
dict
nhuwngbeen trong bạn dùng tham sốfile
. Nó báo lỗi là đúng rồi. Sửafile
thànhdict
nhéAh, tuy nhiên cả
dict
vàfile
đều là từ khóa của python, giống nhưdef
vậy. Nên bạn chọn tên tham số khác nhé.filename
chẳng hạn, code cũng dễ hiểu hơnmình sửa lại như vầy,nó có tạo ra file example.txt mà không có gì ở trong hết,nó báo:‘str’ object has no attribute ‘keys’
Bạn xem bài này nhé
đoạn code của bài đó là là chỉ đọc file của user xong print thẳng ra đúng không bạn, còn mình cần nó in vào trong 1 cái file khác, vs lại mình cũng chưa học cái import ast nên không dung dc.
Đoạn print đó chỉ để biết dữ liệu mình lấy được là loại gì.
Việc ghi ra file ko có gì khó.
Khi đọc file thì sau khi open bạn phải
read()
để lấy dữ liệu ở dạngstr
. Sau đó dùng thao tác với string, vdstring[1:-2]
để loại bỏ dấu{ }
ở đầu và cuối. Sau đósplit(', ')
để tách từng item trong string, sau đó split tiếp. Đó là cách thủ công. Còn cách nhanh thì dùng moduleast
như mình dùng. Quan trọng là bạn hiểu cách làm, dùng công cụ gì chả được, miễn là nhanh, cần gì phải đi đường vòngcái chỗ string[1:-2] là mình ghi for key,value in new_file[1:-2] hả bạn?
Kết quả:
{‘a’:1,‘b’:2}
["‘a’:1,‘b’:"]
(‘a’, “1,‘b’”)
sao nó lại in ra như vầy thay vì ?
a 1
b 2
Bạn post đầy đủ code và dữ liệu cần xử lý nhé. Dữ liệu khác nhau 1 khoảng trắng thì cách split cungz khác. Bạn đọc hiểu code rồi thì sửa theo dữ liệu của mình, đừng máy móc copy paste.
đề là user nhập 1 file chứa text bất kì,chương trình phải đếm số chữ trong file đó vd: I am am–>I 1, am 2.Xong chương trình phải in ra file có tên là example.txt theo dạng l 1(line 1), am 2(line 2). Mình đã làm xong cái function để đếm r còn cái để in ra mà làm hoài ko dc.cái này là phần đã xong
Đoạn
outfile.write(str(string_dict))
Sửa thành
sao sửa cái đó lại nó báo function takes exactly 1 argument (3 given), mình nghĩ cái đoạn function của count ổn rồi mà vì run được
Mình nhầm sang lệnh print
Bạn sửa thành
outfile.write(str(key)+str(value)+'\n')
nhénó chạy rồi cảm ơn bạn, nhưng sao nó báo lỗi cái dòng infile = open(a_string, ‘r’) là coercing to Unicode: need string or buffer . Với lại cho mình hỏi nếu mình muốn file xuất ra theo thứ tự abc mình them vào đây nhưng sao không có gì xảy ra hết vậy.
Lỗi đó có thể do a_string của bạn ko phải là tên file kiểu string mà là 1 file object
Còn sort thì nó chỉ trả về giá trị thôi, phải gán lại vào items.
items = items.sort()
vậy làm sao fix cái a_string được?
Thì bạn post hết code lên đây, hàm đó đúng rồi thì lúc gọi hàm đó bạn truyền biến nào vào?
Bạn tập thói quen khi hỏi cung cấp càng nhiều thông tin càng tốt, để người khác còn hiểu