我在Python3上用tkinter一次打开多个文件时出现了这个错误
打开文件时的我的代码:
def OpenFile():
Tk().withdraw()
filename = askopenfilenames(title='Choose Combolist', filetypes=[("Text Files", "*.txt")])
if filename:
TxtTimeName(filename)
pass
else:
NoFileSelected()
return filename
def TxtTimeName(filename):
CurrentTime = strftime(" %H-%M-%S")
TxtName = os.path.basename(filename)
TxtName = TxtName.replace(".txt", " ")
FullName = TxtName + CurrentTime + ".txt"
return FullName
使用SE文件时的我的代码:
def MailToUser():
filename = OpenFile()
FullName = TxtTimeName(filename)
ctypes.windll.kernel32.SetConsoleTitleW("TextTool | Made by VRX | Mode: Mail To User")
sys.stdout.flush()
try:
os.mkdir('Mail to User')
except Exception as E:
pass
f = open(str("./Mail to User/" + "Combined.txt"),"w+")
StartTime()
with open(filename, "r+", encoding="utf-8", errors="ignore") as file:
for line in file:
word = line.strip()
firstDelPos = line.find("@")
secondDelPos = line.find(":")
stringAfterReplace = line.replace(line[firstDelPos + 0:secondDelPos], "")
try:
f.write(stringAfterReplace)
except Exception as E:
pass
EndTime()
错误:
Traceback (most recent call last):
File "C:\Users\VRX\OneDrive\Desktop\Desktop\Python Projects\combotool\combotool.py", line 494, in <module>
Main()
File "C:\Users\VRX\OneDrive\Desktop\Desktop\Python Projects\combotool\combotool.py", line 420, in Main
TextSorter()
File "C:\Users\VRX\OneDrive\Desktop\Desktop\Python Projects\combotool\combotool.py", line 82, in TextSorter
filename = OpenFile()
File "C:\Users\VRX\OneDrive\Desktop\Desktop\Python Projects\combotool\combotool.py", line 27, in OpenFile
TxtTimeName(filename)
File "C:\Users\VRX\OneDrive\Desktop\Desktop\Python Projects\combotool\combotool.py", line 38, in TxtTimeName
TxtName = os.path.basename(filename)
File "C:\Users\VRX\AppData\Local\Programs\Python\Python38\lib\ntpath.py", line 208, in basename
return split(p)[1]
File "C:\Users\VRX\AppData\Local\Programs\Python\Python38\lib\ntpath.py", line 177, in split
p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not tuple
每当我选择一个文件时,它都会给我这个错误,当我使用askopenfilename而不是askopefilename时,它会工作,但我只能选择一个文件
该错误是由于以下原因造成的:
askopenfilenames
返回文件名的元组,即使只有一个askopenfilenames
的结果传递给os.path.basename
,但该函数需要一个文件名这就是为什么会出现错误
expected str, bytes, or os.PathLike object, not tuple
:您正在传递一个元组,错误消息说您不能这样做相关问题 更多 >
编程相关推荐