【问题标题】:Opening folders and files in python scripting在 python 脚本中打开文件夹和文件
【发布时间】:2023-07-07 18:20:01
【问题描述】:

我有这段代码:

import os
def find(name):
    for root, dirs, files in os.walk("Desktop/"):
        if name in files:
             os.startfile("Desktop/", name, ".exe")


def findFold(name):
    for root, dirs, files in os.walk("Desktop/"):
        if name in files:
            os.startfile("This PC/", name)

..............
    if OpenFile.lower() == "music" or OpenFile.lower() == "music folder":
        findFold("Music")
..............
    elif OpenFile.lower() == "wolf team" or OpenFile.lower() == "wolfteam":
        find("Wolfteam")

OpenFile 是一个字符串,它是用户的输入(文件或文件夹的名称。
该程序没有打开我希望它打开的文件和文件夹。

我在互联网上查看,这就是人们所说的方式和工作方式.. 有人可以帮忙吗?

【问题讨论】:

  • “打不开..我想让它打开什么”:你想要什么,它做了什么?
  • 在findFold方法中,我觉得你应该把if name in files改成if name in dirs
  • 我希望它打开的文件是我给 OpenFile var 作为输入的文件(它是一个 raw_input 变量)。好吧,实际上程序所做的只是自我检查,按时间顺序是可以的,但是在我输入要打开的文件或文件夹之后,它只是继续前进,没有任何东西被打开..跨度>
  • @avenet 我将其更改为 dirs 但在我将文件夹名称作为输入后仍然没有打开任何文件夹。以及文件。 Wolfteam 和 Music 只是我要打开的文件夹和文件的 2 个示例
  • 你在windows上吗? startfile 不能在其他平台上使用。

标签: python file directory


【解决方案1】:

目前还不清楚您要完成什么,但是,如果您尝试在基于 Windows 的文件系统上调用应用程序,我相信您有一个反斜杠,您想要一个正斜杠

例如我会改变

os.startfile("This PC/", name)

os.startfile("This PC/{}".format(name))

我还建议您研究 Python 的 PEP 8 编码约定,并使用他们对可读代码的建议。即:

考虑将文档字符串添加到您的方法中

def fileFold(name):
    '''
    why this method exists
    '''

不要对路径进行硬编码,而是将它们作为变量

def findFold(name, prefix="\Desktop\", suffix=".exe")

将您的活动包装在 Try except 块中

try:
    os.startfile("{}{}{}".format(prefix, name, suffix))
except OSError as err:
    print("Unable to invoke application {}: {}".format(name, err))

【讨论】:

  • 我将其更改为 os.startfile("This PC/{}".format(name)) 但它仍然无法正常工作。您能否更具体地说明您还想知道什么,我会给您提供这些信息