Python 파일을 가져올 때 대시를 사용해도 괜찮습니까?
기본적으로 다음과 같은 파이썬 파일이 있을 때:
python-code.py
및 사용:
import (python-code)
통역사가 나에게 구문 오류를 줍니다.
어떻게 고칠 수 있을까요?python 파일 이름에서 대시는 불법입니까?
Python Code용 스타일 가이드인 PEP 8을 확인해야 합니다.
패키지 및 모듈 이름 모듈은 모두 소문자로 짧은 이름을 사용해야 합니다.가독성이 향상된 경우 모듈 이름에 밑줄을 사용할 수 있습니다.또한 Python 패키지는 모두 소문자로 된 짧은 이름을 사용해야 하지만 밑줄은 사용하지 않습니다.
모듈 이름은 파일 이름에 매핑되고 일부 파일 시스템은 대소문자를 구분하지 않고 긴 이름을 잘라내기 때문에 모듈 이름을 상당히 짧게 선택하는 것이 중요합니다. 유닉스에서는 문제가 되지 않지만 코드가 이전 Mac 또는 Windows 버전 또는 DOS로 전송될 때 문제가 될 수 있습니다.
즉, 파일 이름을 변경합니다 :)
코드에서 한 가지 더 주의할 점은 가져오기 기능이 없다는 것입니다.그렇게import(python-code)
그래야 한다import python-code
일부에서 이미 언급했듯이, 이는 당신이 의도한 것이 아니라 "파이썬에서 코드를 뺀 가져오기"로 해석됩니다.이름에 대시가 있는 파일을 가져와야 하는 경우 다음을 수행할 수 있습니다.
python_code = __import__('python-code')
그러나 위에서 언급한 바와 같이 이것은 실제로 권장되지 않습니다.사용자가 제어할 수 있는 파일 이름을 변경해야 합니다.
TLDR
대시는 불법이 아니지만 다음 세 가지 이유로 사용하면 안 됩니다.
- 대시가 있는 파일을 가져오려면 특수 구문이 필요합니다.
- 대시가 있는 모듈 이름은 필요 없습니다.
- Python Style Guide의 권장 사항에 위배됩니다.
대시를 사용하여 파일 이름을 가져와야 하는 경우 특수 구문은 다음과 같습니다.
module_name = __import__('module-name')
특별한 구문이 필요한 이유가 궁금하십니까?
특별한 구문의 이유는 당신이 글을 쓸 때import somename
식별자가 있는 모듈 개체를 만드는 중입니다.somename
나중에 예를 들어 사용할 수 있습니다.somename.funcname
) 물론입니다.module-name
유효한 식별자가 아니므로 유효한 식별자를 제공하는 특수 구문입니다.
module-name이 유효한 식별자가 아닌 이유를 모르십니까?
걱정하지 마세요. 저도 안 했어요.여기 도움이 되는 팁이 있습니다: 이 파이썬 라인을 보십시오.x=var1-var2
할당의 오른쪽에 빼기 또는 대시가 있는 변수 이름이 표시됩니까?
PS
다른 모든 답변의 가장 관련성이 높은 정보를 한 곳에 포함하는 것 외에는 답변에 독창적인 내용이 없습니다.
는 문는입니다.python-code
식별자가 아닙니다.파서는 이것을 다음과 같이 봅니다.python
마이너스의code
물론 이것은 당신이 요구하는 것을 하지 않을 것입니다.유효한 파이썬 식별자이기도 한 파일 이름을 사용해야 합니다.교체해 보십시오.-
밑줄 친 채로
Python 3에서 import_module을 사용합니다.
from importlib import import_module
python_code = import_module('python-code')
더 일반적으로 말하면,
import_module('package.subpackage.module')
당신은 아마도 몇몇을 통해 그것을 수입할 수 있을 것입니다.__import__
해킹, 하지만 만약 당신이 이미 방법을 모른다면, 당신은 하지 말아야 합니다.이름(". 즉, 모듈이 Python 모듈인 경우 Python 모듈 이름("identifier입니다.foo_bar
내에서 할 수 .print foo_bar
할 수 입니다. ( ).print foo-bar
-> 구문 오류).
이지만, 에 파일 이름 지정이 가능하다면,python-code
통제 에 있지 , 우의통있않다습해니, 는킹하사용을 사용하는 .__import__
다른 작성자의 코드를 복사하거나 이름을 바꾸거나 다른 방법으로 장난치는 것보다 낫습니다. 저는 해 보았지만, 파일 이름을 이름을 ..py
연장하다.문서를 보고 다음에 대한 설명을 얻는 방법을 찾은 후.py
저는 결국 이렇게 되었습니다.
import imp
try:
python_code_file = open("python-code")
python_code = imp.load_module('python_code', python_code_file, './python-code', ('.py', 'U', 1))
finally:
python_code_file.close()
파일을 .python-codec
일주에
언급URL : https://stackoverflow.com/questions/761519/is-it-ok-to-use-dashes-in-python-files-when-trying-to-import-them