我想做什么:
我要打印文件名。我可以看到输出文件可用。但是我无法单独打印文件名。
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
答案 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")