wat*_*123 7 python csv typeerror
我正在尝试将管道分隔的文本文件转换为 CSV 文件,然后迭代并打印 CSV 文件。这是我的代码:
with open("...somefile.txt", "r") as text_file:
text_reader = csv.reader(text_file, delimiter='|')
with open("...somefile.csv", 'w') as csv_file:
csv_writer = csv.writer(csv_file, delimiter=',')
csv_writer.writerows(text_reader)
with open (csv_file, 'r') as f:
reader = csv.reader (f, delimiter=',')
for row in reader:
print(row)
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误消息:
----> 9 with open (csv_file, 'r') as f:
10 reader = csv.reader (f, delimiter=',')
11 for row in reader:
TypeError: expected str, bytes or os.PathLike object, not _io.TextIOWrapper
Run Code Online (Sandbox Code Playgroud)
谁能解释一下这是什么意思?
另外,如果我要把它变成一个函数,我怎样才能将文件名作为输入,然后更改文件以在转换为 csv 文件时添加 .csv 扩展名?
谢谢
您正在传递open一个已打开的文件,而不是您创建的文件的路径。
代替:
with open (csv_file, 'r') as f:
Run Code Online (Sandbox Code Playgroud)
和
with open ("...somefile.csv", 'r') as f:
Run Code Online (Sandbox Code Playgroud)
要更改函数中的扩展名:
import pathlib
def txt_to_csv(fname):
new_name = f'{Path(fname).stem}.csv'
with open(fname, "r") as text_file:
text_reader = csv.reader(text_file, delimiter='|')
with open(new_name, 'w') as csv_file:
csv_writer = csv.writer(csv_file, delimiter=',')
csv_writer.writerows(text_reader)
with open (new_name, 'r') as f:
reader = csv.reader (f, delimiter=',')
for row in reader:
print(row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55187 次 |
| 最近记录: |