python将文件复制到Windows上的网络位置而不映射驱动器

Posted

技术标签:

【中文标题】python将文件复制到Windows上的网络位置而不映射驱动器【英文标题】:python copy files to a network location on Windows without mapping a drive 【发布时间】:2011-03-07 19:55:10 【问题描述】:

我在 windows 上的非交互式会话中运行 python,因此我无法映射网络驱动器。

我在这里和通过谷歌研究的大部分内容都建议映射网络驱动器并以这种方式复制文件。

在 linux 上,我会使用 smbmount 来促进这一点,但不幸的是,我正在使用的软件与 Windows 相关联。

是否有通过 UNC 路径与文件交互的选项?

【问题讨论】:

您是否尝试过使用 unc 路径创建文件对象?即 f = open('\\server\dir\file.name'); f.write(strings)? 我在 Windows 上的 Python 中一直使用 UNC 路径。他们工作正常。 【参考方案1】:

就我个人而言,让 Python 简单地识别 \\\\<server>\\path\\to\\directory\\ 从来没有遇到过困难。令人讨厌的部分是,对于胜利中的每个“\”。路径,python中需要有2个。

【讨论】:

... 除非您使用原始字符串,否则您应该这样做。 :-) 或 os.sep。更丑但不那么麻烦。 如何使用凭据对该共享进行身份验证? @kindall 当然,但就此而言,我也不应该真正使用 Windows。一周之内,我全是*nix!嗬嗬! @kindall 但是请记住,原始字符串不会让您使用尾随反斜杠 - 这总是让我感到困惑。【参考方案2】:

首先使用“NET USE”访问网络共享 - 没有驱动器号,例如:

winCMD = 'NET USE ' + networkPath + ' /User:' + user + ' ' + password
subprocess.Popen(winCMD, stdout=subprocess.PIPE, shell=True)

与此处一样(但未指定驱动器号): What is the best way to map windows drives using Python?

然后用shutil.copy复制文件/目录,如:

import shutil
shutil.copy2(networkPath + 'sourceDir/sourceFile', 'destDir/destFile')

在这里: How do I copy a file in python?

【讨论】:

以上是关于python将文件复制到Windows上的网络位置而不映射驱动器的主要内容,如果未能解决你的问题,请参考以下文章

无法将文件从共享上的一个位置复制到同一共享上的另一个位置,无需凭据

File.Copy 与手动 FileStream.Write 用于复制文件

使用 Python,如何访问 Windows 网络上的共享文件夹?

用于 PC 的 CSV 文件输出

如何将文件/文件夹从 Windows 共享位置复制到 docker 容器中?

使用Windows cmd.exe从FTP服务器复制到网络服务器