如何获取用户在资源管理器中选择的路径?

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

(摘自)