如何获取用户在资源管理器中选择的路径?
How do I get the path selected by the user in Explorer?
我有一个使用 .txt 制作语音文本的程序,但 os.startfile 不允许我 select 该文件,因此获取它的路径)我将非常感谢你求助!!
Как должно быть。
enter image description here
Как у меня)
enter image description here
import os
import pyttsx3 as pyt
from gtts import gTTS
class DICTOR:
def __init__(self, path):
self.engine = pyt.init()
#voices = self.engine.getProperty('voices')
self.engine.setProperty('voice', 0)
#rate = self.engine.getProperty('rate')
self.engine.setProperty('rate', 150)
with open(path, 'r') as file:
self.file = file.read()
# def speak(self):
# self.engine.say(self.file)
# self.engine.runAndWait()
def save(self, filename):
tss = gTTS(text = self.file, lang='en')
tss.save(filename)
#rate = self.engine.getProperty('rate')
path = os.startfile(filepath = 'D:\Python\Road_map\DICTOR')
DICTOR(path).save('.mp3')
我猜你的问题出在格式上。您应该将 r
添加到开头。应该是:
path = os.startfile(filepath = r"G:\EEGdatabase41455.docx")
需要 r
因为 \
被 python 认为是特殊字符。另一种选择是使用 \
:
转义 \
path = os.startfile(filepath = 'D:\Python\Road_map\DICTOR')
docs 中的更多信息。
最后,由于您没有提供错误信息,也许这根本不是您的问题。如果这不能解决问题,请添加您的错误日志,以便我们确切知道发生了什么。
编辑:看来你误解了os.startfile
的用法。这个函数接受你需要“启动”的东西,然后启动它。所以如果你说
os.startfile("something.pdf")
然后 something.pdf
将在您的默认 PDF 软件中打开。如果您改为传入 file.html
之类的内容,则此 html 文件将在您的默认网络浏览器中打开。
所以您现在传入 D:\Python\Road_map\DICTOR
,这是一个文件夹,startfile
函数只是在 Windows 资源管理器中打开该文件夹。 startfile
的完整参考可以在 docs.
中找到
无论如何,我认为您根本不需要startfile
。您需要一个文件选择器,您可以使用 Tkinter
包获得它。然后你可以说:
from Tkinter import Tk # from tkinter import Tk for Python 3.x
from tkinter.filedialog import askopenfilename
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)
path = filename
(摘自)
我有一个使用 .txt 制作语音文本的程序,但 os.startfile 不允许我 select 该文件,因此获取它的路径)我将非常感谢你求助!!
Как должно быть。 enter image description here Как у меня) enter image description here
import os
import pyttsx3 as pyt
from gtts import gTTS
class DICTOR:
def __init__(self, path):
self.engine = pyt.init()
#voices = self.engine.getProperty('voices')
self.engine.setProperty('voice', 0)
#rate = self.engine.getProperty('rate')
self.engine.setProperty('rate', 150)
with open(path, 'r') as file:
self.file = file.read()
# def speak(self):
# self.engine.say(self.file)
# self.engine.runAndWait()
def save(self, filename):
tss = gTTS(text = self.file, lang='en')
tss.save(filename)
#rate = self.engine.getProperty('rate')
path = os.startfile(filepath = 'D:\Python\Road_map\DICTOR')
DICTOR(path).save('.mp3')
我猜你的问题出在格式上。您应该将 r
添加到开头。应该是:
path = os.startfile(filepath = r"G:\EEGdatabase41455.docx")
需要 r
因为 \
被 python 认为是特殊字符。另一种选择是使用 \
:
\
path = os.startfile(filepath = 'D:\Python\Road_map\DICTOR')
docs 中的更多信息。
最后,由于您没有提供错误信息,也许这根本不是您的问题。如果这不能解决问题,请添加您的错误日志,以便我们确切知道发生了什么。
编辑:看来你误解了os.startfile
的用法。这个函数接受你需要“启动”的东西,然后启动它。所以如果你说
os.startfile("something.pdf")
然后 something.pdf
将在您的默认 PDF 软件中打开。如果您改为传入 file.html
之类的内容,则此 html 文件将在您的默认网络浏览器中打开。
所以您现在传入 D:\Python\Road_map\DICTOR
,这是一个文件夹,startfile
函数只是在 Windows 资源管理器中打开该文件夹。 startfile
的完整参考可以在 docs.
无论如何,我认为您根本不需要startfile
。您需要一个文件选择器,您可以使用 Tkinter
包获得它。然后你可以说:
from Tkinter import Tk # from tkinter import Tk for Python 3.x
from tkinter.filedialog import askopenfilename
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)
path = filename
(摘自)