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