为什么反斜杠成为我的两个字符串?

时间:2019-02-13 22:27:36

标签: python string escaping shutil rawstring

我想在Windows上使用Python将文本文件发送到网络打印机。我无法正确格式化目标字符串。此方法:

shutil.copy(fileName, '\\server\printer')

吐出这个错误:

FileNotFoundError: [Errno 2] No such file or directory: '\\server\\printer'

第二个反斜杠来自哪里?

我可以从命令提示符成功复制文件,这将我的问题缩小到此shutil.copy()方法。我一直在研究字符串,字符串表示形式,转义字符和UNC路径,但是没有运气。

也许我们应该这样逃避那些反斜杠?

shutil.copy(fileName, '\\\\server\\printer')

不,也许我们应该尝试像这样的原始字符串?

shutil.copy(fileName, r'\\server\printer')

不,那不行。我想我不太了解目标字符串在幕后的移动方式或这样做的样子,而且我不确定如何找到目标字符串。也许我应该深入研究shutil.copy()方法?好吧,让我们看看,

def copyfile(src, dst, *, follow_symlinks=True):
    """Copy data from src to dst.

    If follow_symlinks is not set and src is a symbolic link, a new
    symlink will be created instead of copying the file it points to.

    """
    if _samefile(src, dst):
        raise SameFileError("{!r} and {!r} are the same file".format(src, dst))

    for fn in [src, dst]:
        try:
            st = os.stat(fn)
        except OSError:
            # File most likely does not exist
            pass
        else:
            # XXX What about other special files? (sockets, devices...)
            if stat.S_ISFIFO(st.st_mode):
                raise SpecialFileError("`%s` is a named pipe" % fn)

    if not follow_symlinks and os.path.islink(src):
        os.symlink(os.readlink(src), dst)
    else:
        with open(src, 'rb') as fsrc:
            with open(dst, 'wb') as fdst:
                copyfileobj(fsrc, fdst)
    return dst

看到这种情况时,我什至不知道从哪里开始,这似乎让我头疼不已。

0 个答案:

没有答案