将CWDir设置为MSDos环境的变量

2024-10-08 19:19:22 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我吗? 我正在尝试编译一个用python编写的程序,我可以在win9Xdos中运行,我可以从9xDos批处理文件调用/启动该程序,该文件将找到当前的工作目录&;我的意思是标识执行python程序和批处理文件的cwd(当前工作目录)。python程序将被称为getcwd.py,我希望有人能概述我需要做什么来转换为EXE/COM文件。有一个名为Py2EXE的程序,但不确定它是否会编译为Ms dos文件。无论如何,到目前为止,这是我的简单代码。有人能告诉我我走对了吗?哦,顺便说一下,我想做的是找到CWD&;将结果路径注入可从9XDO读取的变量。当前Var将为%cwd%

# importing os module
import os

# some websites say use: del cwd (to remove variable if it exists)
cwd = none
cwd = os.getcwd()
print(cwd)

打印行可能需要与下面的代码交换,不确定是否需要帮助:

print(type(path))
# <class 'str'>

上面的代码是否可以工作,比如在根目录中,例如C:\with&;努力获取CWD变量&;如果正确,我将如何继续将其编译为exe/com文件?我是否需要考虑LFN&;可能路径之间的空格,例如C:\Program Files&;可能的反斜杠等


Tags: 文件代码py路径程序目录osexe
1条回答
网友
1楼 · 发布于 2024-10-08 19:19:22

你的代码并不完美,但它在正确的轨道上。您所需要的就是:

import os

if __name__ == '__main__':
    print(os.getcwd())

不需要辅助变量,我不知道有哪些网站建议您在创建变量之前删除该变量。尝试删除不存在的Python变量是一个运行时错误。所以我会远离那些网站

但您的问题是关于设置环境变量的。调用print()不会这样做。它只需将当前工作目录回显到控制台。无法更改将影响父进程的正在运行进程的环境。这既不是Python限制,也不是Windows限制:它是非常通用的。操作系统在创建进程时设置进程的环境。您可以对环境进行更改(使用os.environ[env-var]),但这些更改仅在该Python进程内可见,对运行Python程序的批处理文件的环境不可见。为此,需要将值传递回调用进程

一种方法是:

在Python中:

import os

if __name__ == '__main__':
    print(f"set CWDIR={os.getcwd()}", file=open("mycd.bat","w"))

我已经15年没有Python1.5.2环境了,所以我不能测试它,但我认为应该是等效的

if __name__ == '__main__':
    print >> open("mycd.bat","w"), "set CWDIR=%s" % (os.getcwd(),) 

cmd.exe控制台中:

call mycd.bat

虽然如果您的Win9XDos不提供%cd%(据我所知,MS-DOS 5中提供了%cd%,或者更晚的版本),也无法判断它是否支持call。(您是否正在运行command.com而不是cmd.exe?这可以解释为什么应该存在的东西丢失了)

我使用pyinstaller创建了一个64位的.exe,结果生成了一个大约6MB的文件。现在,32位可执行文件变小了,但可能是生成的可执行文件仍然太大,无法加载

因此,我认为Python路线可能会比它的价值更麻烦

相关问题 更多 >

    热门问题