Python:TypeError:不支持的操作数类型 '+': '_io.TextIOWrapper' 和 'str'

4

我想要做什么:

我想要打印一个文件名。我可以看到输出文件是可用的。但我无法仅打印文件名。

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'

我尝试解决的问题:

这与IT技术有关。
print(str(outputFile) + " is generated")

输出结果如下:

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

期望输出:

string_20181213-160004.csv is generated

1
我认为你想打印字符串变量string_file,而不是打开文件对象outputFile - Vikrant Sharma
2
打印文件名string_file而不是文件对象怎么样? - Serge Ballesta
我现在明白了! - Dipankar
2个回答

1

只需使用:print(outputFile.name + "被生成了")


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() 的结果,因此它返回对象本身而不仅仅是名称。

为什么要使用自己创建的变量,当io.TextIOWrapper已经有一个代表它的属性呢? - ddor254
因为变量已经被创建用于分配到outputFile,所以任何一种方式都可以接受,实际上这种形式更易读。 - Nordle
我知道,但使用对象属性更加直观。 - ddor254

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接