Почему обратный слеш становится двумя моими строками? - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу отправить текстовый файл на сетевой принтер с помощью Python на Windows все.Я не могу правильно отформатировать строку назначения.Этот метод:

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

Выплевывает эту ошибку:

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

Откуда в мире эта вторая обратная косая черта?

Я могу успешно скопировать файлы изкомандная строка, которая сужает мою проблему до этого shutil.copy() метода.Я безуспешно исследовал строки, строковые представления, escape-символы и пути 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

Видите, я даже не знаю, с чего начать, когда смотрю на что-то вроде этого, и это похоже на большую головную боль, чем я могу позволить для такой безобидной ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...