나는 이것으로 몇 시간 동안 고생했지만 해결책을 찾았지만 마음에 들지 않았습니다. 이 문제를 해결할 수있는 기본 방법이 있습니까?파이썬 이스케이프 문자
경로가 포함 된 변수가있는 Windows에 있습니다. 파일을 열려고하지만 런타임까지 확인할 수없는 이스케이프 문자가 포함되어 있습니다.
당신은 '또 shutil'를 사용 할 경우 그것은 잘 작동 shutil.copy(file_path, new_file_path)
.
하지만 당신은 시도와 같은 경로를 사용하는 경우 :
f = open(file_path, encoding="utf8")
그것은 '는 \'경로에서 '벨'로 읽 = 7
때문에 작동하지 않습니다나는이 모든 것을 시도했지만, 내가 작업 한 유일한 것은 커스텀 함수 'reconstruct_broken_string'이다.
utf-8
F:\\ScriptsFilePathddons\\import_test.py
'F:\\ScriptsFilePath\x07ddons\\import_test.py'
r"'F:\ScriptsFilePathddons\import_test.py'
b'F:\\\\ScriptsFilePath\\x07ddons\\\\import_test.py'
F:\ScriptsFilePathddons\import_test.py
'F:\\ScriptsFilePath\x07ddons\\import_test.py'
F:\ScriptsFilePath\addons\import_test.py
이 거기에이 기능이 아니라이 작업을 수행하는 방법에 지어진 : 여기
file_path = "F:\ScriptsFilePath\addons\import_test.py"
print(sys.getdefaultencoding())
print()
print(file_path.replace('\\', r'\\'))
print('%r' % (file_path))
print(r'r"' + "'" + file_path+ "'")
print(file_path.encode('unicode-escape'))
print(os.path.normpath(file_path))
print(repr(file_path))
print()
print(reconstruct_broken_string(file_path))
backslash_map = { '\a': r'\a', '\b': r'\b', '\f': r'\f',
'\n': r'\n', '\r': r'\r', '\t': r'\t', '\v': r'\v' }
def reconstruct_broken_string(s):
for key, value in backslash_map.items():
s = s.replace(key, value)
return s
인쇄물입니까? 는 왜 '또 shutil'와 '개방'하지
감사
작업 않습니다 문제는이 라인에
프로그램을 오류를 나타내는 가능한 최소 * 완료 * 프로그램으로 줄이십시오. 그런 다음 짧은 프로그램을 복사하여 귀하의 질문에 붙여 넣으십시오. 이 디버깅 기술에 대한 정보는 http://SSCCE.ORG를 참조하십시오. –
'str.translate '에 대한 고유 한 호출을 사용하여'reconstruct_broken_string'을 단순화 할 수 있습니다 (python3을 사용하는 경우). 키가 * code-points * (즉, ord ('\ a') : r '\ a'')가되도록'backslash_map '을 변경하고'file_path.translate (backslash_map)'를 호출하면됩니다. – Bakuriu
나는 이것을 쓸모 없게했다 : backslash_map = {ord ('\ a') : r '\ a'} 다음 : file_path.translate (backslash_map) – terrachild