프로그램에서 사용자에게 읽을 파일 이름을 요청한 다음 처리 된 데이터를 기록 할 파일을 요청했다고 가정 해 봅시다.현재 작업 디렉토리에 파일 가져 오기
프로그램이 현재 디렉토리를 사용하기 위해 필요한 파일의 디렉토리를 가져올 수있는 방법이 있습니까? 또는 다른 방법으로 해당 파일에 액세스 할 수 있습니까?
프로그램에서 사용자에게 읽을 파일 이름을 요청한 다음 처리 된 데이터를 기록 할 파일을 요청했다고 가정 해 봅시다.현재 작업 디렉토리에 파일 가져 오기
프로그램이 현재 디렉토리를 사용하기 위해 필요한 파일의 디렉토리를 가져올 수있는 방법이 있습니까? 또는 다른 방법으로 해당 파일에 액세스 할 수 있습니까?
사용자가 디렉토리로 전체 파일 경로를 입력하면 sys.path를 사용하여 구문 분석 한 다음 os.chdir()을 구문 분석 할 수 있습니다.
사용자가 전체 경로를 입력 한 경우 왜 구문 분석을해야합니까? 그냥'open()'을 호출하십시오! –
Tkinter를 사용하면 파일 업로드 상자로 입력하라는 메시지가 아니라 사용자에게보다 쉽게 메시지를 보낼 수 있습니다. 파일을 선택하면 전체 파일 경로가 제공됩니다. ,
from tkinter import filedialog
# this gives you the full file path
filepath = askopenfilename()
print filepath
# or do whatever you want with the file path
사용자를 요구하는 문제가 발생할 것입니다 전체 파일 경로를 입력 할 것을 말하고 있지,하지만 개인적인 경험에서 모두가 당신이 (안 모든 사람을 알고 파일 경로 구문을 언급하지 않기 위하여)하고자하는 입력을 제공합니다 이 예는 오류 마진을 줄입니다.
Welp, 이것이 내 첫 번째 답변이므로 잘만하면 질문을 오해하지 말고 나쁜 출발을하십시오. 여기에 아무것도 안 간다.
솔직히 말해서, 이전의 코멘트와 대답이 제공 한 것보다 훨씬 더 말할 것도 없다. "portable" ways to "ask" for a path relative to your current working directory이 있지만 그러한 디자인 선택은 특히 사용자가 생각하는 것과 관련하여 명확하지 않습니다. 이것이 모두 비하인드 파일 조작이라면, 그것은 하나의 일이지만,이 경우에는 입니다. 다른 사람과 마찬가지로, IFS는 읽기 및 쓰기 파일에 대한 전체 경로를 요청하는 것이 좋습니다. 완성도를 위해서,이 시작할 수 : 작업을 완료 할 때 컨텍스트 관리자 (with
)이 자동으로 파일을 닫을 것이라고
# responses should be of the form
# full/path/from/home/directory/to/file/my_read_and_write_files.txt
fileToReadPath = input("Provide the full path to your read file: ")
fileToWritePath = input("Provide the full path to your write file: ")
with open(fileToReadPath, 'r') as readFile, open(fileToWritePath, 'w') as writeFile:
# do stuff with your files here!
# e.g. copy line by line from readFile to writeFile
for line in readFile:
writeFile.write(line)
공지 사항. 이런 간단한 것들을 위해서, 나는 위의 링크 인 this section on the os module과 this section on the IO itself을 파이썬 문서의 옵션과 장난감 예제를 설명하는 데 꽤 잘할 것이라고 생각한다.
디렉토리를 가져 오는 유일한 방법은 사용자에게 파일 이름이 아닌 전체 디렉토리 경로를 입력하도록 요청하는 것입니다. 이 프로그램은 마술처럼 파일이 들어있는 디렉토리를 알 수 없습니다. –
오, 도움 주셔서 감사합니다! –
모듈을 _importing_하거나 파일을 _reading_ 하시겠습니까? 그것들은 매우 다른 것들입니다. –