Python:TypeError:+不支持的操作数类型:“ _ io.TextIOWrapper”和“ str”

时间:2018-12-13 10:43:22

标签: python python-3.x

我想做什么:

我要打印文件名。我可以看到输出文件可用。但是我无法单独打印文件名。

Python代码:

today=datetime.datetime.today().strftime("%Y%m%d-%H%M%S")
string_file="string_"+today+".csv"
outputFile = open(string_file_rdkb, "w")
#....some code here...
my_df=pd.DataFrame(datalist2)
my_df.to_csv(outputFile, index=False, header=False)
print(outputFile + " is generated") #Here is the issue

输出显示:

print(outputFile + " is generated")
TypeError: unsupported operand type(s) for +: '_io.TextIOWrapper' and 'str'

我要解决的问题:

print(str(outputFile) + " is generated")

输出显示:

<_io.TextIOWrapper name='string_20181213-160004.csv' mode='w' encoding='cp1252'> is generated

预期输出:

string_20181213-160004.csv is generated

3 个答案:

答案 0 :(得分:0)

请尝试使用已定义的变量string_file,因为这只是文件名,已经是字符串格式;

today=datetime.datetime.today().strftime("%Y%m%d-%H%M%S")
string_file="string_"+today+".csv"
outputFile = open(string_file_rdkb, "w")
#....some code here...
my_df=pd.DataFrame(datalist2)
my_df.to_csv(outputFile, index=False, header=False)
print(string_file+ " is generated") #Here is the issue

输出:

>>> string_20181213-160004.csv is generated

您之前打印的是文件object,它是对文件名调用open()的结果,因此它返回的是对象本身,而不是名称。

答案 1 :(得分:0)

只需使用:print(outputFile.name + " is generated")

答案 2 :(得分:0)

outputFile是指向文件的指针,而不是实际名称:

改为使用此:

import os
name = os.path.basename(outputFile.name)
print(name + " is generated")