【发布时间】:2016-09-29 16:34:08
【问题描述】:
我在编写一些代码时遇到了问题。基本上,当我运行代码时,我输入一个 8 位数字,它应该扫描 CSV 文件以查看该数字是否在文件中。如果是,则应将该行写入文本文件。但是,当我运行它并输入一个数字时,我得到了这个:
TypeError: must be str, not list
(编辑)即使它是固定的,输出是:
<_io.TextIOWrapper name='receipt.txt' mode='a' encoding='cp1252'>
我的代码如下:
import csv
import sys
import re
addItem = ""
gtinNum = ""
quantity = 0
totalPrice = 0
receipt = open("receipt.txt", "r+")
f = open("ChocolateCSV.csv", "rt")
def scanGTIN():
rows = re.split('\n', f.read())
for index, row in enumerate(rows):
global cells
cells = row.split(',')
if gtinNum in cells:
receipt.write(cells)
def gtinQuestion():
global gtinNum
gtinNum = input("Please enter the GTIN-8 Code of the product you would like to order:")
if gtinNum.isdigit() == False or len(gtinNum) != 8:
gtinQuestion()
elif gtinNum.isdigit() == True and len(gtinNum) == 8:
scanGTIN()
gtinQuestion()
感谢您的帮助。
【问题讨论】:
-
cells = row.split(',').write(row)或使用.write(",".join(cells))将单元格放回字符串 -
@TadhgMcDonald-Jensen 得到错误,正如我在其他建议中提到的那样,<_io.textiowrapper name="receipt.txt" mode="r+" encoding="cp1252">
-
我不太清楚你的意思,但我注意到你没有关闭你的文件,我建议你这样做,看看是否能解决你的问题。
-
@TadhgMcDonald-Jensen 抱歉,如果听起来不对。基本上,当我想打印内容时,我得到 <_io.textiowrapper name="receipt.txt" mode="a" encoding="cp1252">
-
@TadhgMcDonald-Jensen 即使我在打印之前或之后关闭它,我仍然是相同的输出