windows os.startfile()不打开文件

rdlzhqv9  于 2023-01-27  发布在  Windows
关注(0)|答案(1)|浏览(126)

我想从一个目录中创建一个文件列表。max,用户可以选择该目录,然后在3ds Max未运行时打开它。
问题是,我正在使用os.starfile()打开.max文件,甚至尝试使用subprocess,但没有一个工作,并出现以下消息:

    • “未找到文件错误:[WinError 2]系统找不到指定的文件:“*

正如您所看到的,该程序识别目录的路径和其中的.max文件。
我已经用os.startfile打开一个.max文件一次,它做了它的工作,但不能弄清楚为什么它不工作,这一次。

import os
import psutil
import easygui
import time

from tkinter import filedialog
from tkinter import *

root = Tk()

msg = "Select a folder to render the .max files inside"
title = "3DS MAX AUTO RENDER"
choice = ["Select Folder"]
reply = easygui.buttonbox(msg, title, choices = choice)

if reply == "Select Folder":
    root.directoryPath = filedialog.askdirectory(initialdir="/", title="Select a folder")
    print(root.directoryPath)
    directoryFiles = os.listdir(root.directoryPath)
    print(directoryFiles)

isRunning = "3dsmax.exe" in (i.name() for i in psutil.process_iter())

if (isRunning == False):
    for file in directoryFiles:
        os.startfile(file)
ivqmmu1c

ivqmmu1c1#

os.listdir返回的文件名是相对于给定目录的。当你运行脚本时,你不在那个目录中,它找不到文件,这就是为什么你会得到一个错误。
使用os.path.join连接目录和文件名:

directoryFiles = [os.path.join(root.directoryPath, x) for x in os.listdir(root.directoryPath)]

directoryFiles将包含绝对路径,因此不会出现错误。

相关问题