programing

python에서 파일 이름을 가져오는 방법은 숫자로 시작합니다.

newstyles 2023. 10. 11. 20:32

python에서 파일 이름을 가져오는 방법은 숫자로 시작합니다.

기본적으로 다음과 같은 파일이 있습니다.8puzzle.py파일을 다른 파일로 가져오기를 원합니다(같은 폴더에 있고 파일이 제공되는 대로 파일 이름을 변경할 수 없습니다).파이썬에서 이걸 할 수 있는 방법이 있습니까?나는 평소대로 노력했습니다.from 8puzzle import *, 그것은 나에게 오류를 줍니다.

오류:

>>> import 8puzzle
  File "<input>", line 1
    import 8puzzle
           ^
SyntaxError: invalid syntax
>>> 

당신은 할 수 있습니다.

puzzle = __import__('8puzzle')

매우 흥미로운 문제입니다.번호가 적힌 어떤 것도 이름을 붙이지 않는 것을 기억하겠습니다.

당신이import *-- 당신은 이 질문과 대답을 확인해야 합니다.

위의 답변은 맞지만, 현재 권장되는 방법은 기능을 사용하는 것입니다.

importlib.import_module(name, package=None)
모듈을 가져옵니다.name 인수는 절대 또는 상대 용어(예: 둘 중 하나)로 가져올 모듈을 지정합니다.pkg.mod아니면..mod이름이 상대적으로 지정된 경우 패키지 이름을 해결하기 위한 앵커 역할을 할 패키지 이름으로 package 인수를 설정해야 합니다(예: 패키지 이름).import_module('..mod', 'pkg.subpkg')수입할 것입니다pkg.mod).

import_module() 함수는 주위를 단순화하는 래퍼 역할을 합니다.importlib.__import__(). 이것은 함수의 모든 의미론이 다음에서 파생됨을 의미합니다.importlib.__import__(). 이 두 기능의 가장 중요한 차이점은import_module()지정된 패키지 또는 모듈을 반환합니다(예:pkg.mod), 반면__import__()최상위 패키지 또는 모듈(예:pkg).

인터프리터가 실행을 시작한 이후 생성된 모듈을 동적으로 가져오는 경우(예: Python 소스 파일 생성), 다음을 호출해야 할 수도 있습니다.invalidate_caches()새 모듈이 가져오기 시스템에 의해 인식되도록 합니다.

__import__ 지금은 권장되지 않습니다.

importlib.__import__(name, globals=None, locals=None, fromlist=(), level=0)
빌트인 구현__import__()기능.

참고 모듈을 프로그래밍 방식으로 가져오려면 다음을 사용해야 합니다.import_module()이 기능 대신에

파일 디렉토리 구조는 다음과 같습니다.

 daily
   -- 20210504
         permutations.py
         __init__.py
   __init__.py

다음을 가져올 수 있습니다.permutations모듈별__import__아니면importlib.import_module.

공식 문서에서는 다음을 사용할 것을 권장합니다.importlib.import_module.

가져오기(이름, 글로벌=none, 로컬=none, fromlist=(),레벨=0) -> 모듈

모듈을 가져옵니다.이 함수는 일반적인 용도가 아닌 파이썬 인터프리터가 사용하기 위한 것이기 때문에 다음과 같이 하는 것이 좋습니다.useimportlib.import_module()모듈을 프로그래밍 방식으로 가져옵니다.

뭐가 다른 거지?

를 사용하여 구현하는 경우__import__. 예를 들어,

res = __import__('daily.20210504.permutations')

res의 결과는 daily module입니다.

그래서, 당신이 원한다면, 당신은.permutations e, fromlist parameter데,다.

res = __import__('daily.20210504.permutations', fromlist=('daily.20210504'))

res의 결과는 이제 그게 맞는 결과라고 볼 수 있습니다.

사용하면 어떨까요?importlib.import_module?

res = importlib.import_module('daily.20210504.permutations')

이것은 당신이 그것을 얻을 수 있게 해줍니다.permutations직접 모듈을 구성합니다.

사용하지 마십시오..py수입 연장.

요?from 8puzzle import *일?

가치가 있다면, 에는.from x import *모듈의 네임스페이스를 현재 컨텍스트로 블리딩하므로 선호하는 Python 패턴이 아닙니다.

일반적으로 해당 모듈에서 특별히 원하는 것을 가져오도록 시도합니다.다른 모듈에서 전역을 가져올 수 있습니다.

예를 들어, 있는 경우8puzzle.foo은 '에서 '8 퍼즐다'에서 '할 수

편집:

의 동안.py메시지가 맞습니다. 충분하지 않습니다.

__import__('8puzzle')제안이 정확합니다.하지만 는 이 패턴을 피하는 것을 강력히 추천합니다.

일례로, 내부 개인 파이썬 방식으로 예약되어 있습니다.모듈을 가져올 수 있다는 것이 무엇을 의미하는지에 대한 기본적인 가정을 깨고 있습니다.파일 이름을 다른 이름으로 바꾸기만 하면 다음과 같습니다.puzzle8, 이 문제를 해결해 줄 겁니다

이것은 당신이 수입하는 것이 무엇인지를 상위에서 알고 싶어하고 코드가 PEP8을 준수하기를 기대하는 경험 많은 파이썬 프로그래머들을 좌절시킬 것입니다.

언급URL : https://stackoverflow.com/questions/9090079/in-python-how-to-import-filename-starts-with-a-number