【发布时间】:2017-11-29 07:52:28
【问题描述】:
我正在做的只是一个简短的概述:我正在尝试在网络目录中使用 python 自动执行一些 pdf 合并例程,这涉及在特定网络位置复制、删除和创建文件。抱歉,如果我的语言不是很精确。
我在 Windows 7 上使用 python 3.6 进行编码。该程序需要在其他机器上分发,因此本地和临时修复可能无济于事。我编写的代码功能齐全,适用于所有本地文件夹和文件,但是,现在我需要在网络上使用它,访问我需要的文件夹时遇到了一些困难。
这是我尝试过的:
os.system("pushd " + "\\" + "\\netWorkDrive\Reports")
check_output("pushd " + "\\" + "\\netWorkDrive\Reports", shell=True)
pushd 和 popd 在 cmd 中输入时工作正常,但是当我通过 python 进行系统调用时,它们只是不通过。我发送了一个系统调用,它运行正常,但是当我“cd”一个当前目录时,它表明我仍然在我以前的目录中。如果通过 cmd 手动完成,一切都会按预期进行。我已经用谷歌搜索了这个问题,但最终没有找到任何工作/有用的东西。我真的很感激任何建议,如果我需要进一步澄清我的问题,请告诉我。
谢谢!
【问题讨论】:
-
可能是很多东西。驱动器有全局地址吗?而不是本地映射的“字母”? (例如,大型企业 Intranet 网络有一个全局地址,员工通常会将其映射到他们自己的“N:”(或任何字母)驱动器。尝试使用整体地址。此外,尝试通过以 'r 开头的字符串访问驱动器' 因此:
r'C:/Users/Vlox/Stuff'r表示原始字符串,因此可以正确读取斜杠(通常它们是可能导致您的问题的python转义字符)。或者,将反斜杠加倍'C://Users//Vlox//Stuff' -
我相信我使用的是全局地址,因为其他人都在使用它来访问网络“\\ourFolderName\reports”。据我了解,
popd将为我创建一个临时驱动器,但我还没有到那个阶段。我输入斜杠的方式已经考虑了转义字符,因为我已经测试了一个带有路径名的字符串,但我仍然尝试了 'r",不幸的是这没有帮助。 -
PUSHD 可能工作正常。但是,当创建的 shell 退出时,您将返回到现有进程,该进程仍然具有调用 os.system() 之前的 cwd。
-
我也是这么想的,因为我已经在其他相关问题中看到了它的解释。但是,我在程序运行后手动检查,并没有创建临时驱动器。
标签: python python-3.x networking cmd windows-7