2012-03-07 3 views
0

필자는 프로그램에서 텍스트 파일에 원격으로 쓸 수있는 Python 프로그램을 작성하고 있습니다. 관련 코드 :".txt"가 아닌 파일에 쓰기 Python

namein = input("What do you want the filename to be? Don't include an extension...\n") 
extin = input("What would you like the extension to be? This program supports:\nMicrosoft Word Document: '.docx'\nPlain Text File: '.txt'\nRich Text File: '.rtf'\nPages Document: '.pages'\n") 
aw = input("Do you want to append your text file, or rewrite the whole thing? (append/write) ") 
if aw == 'append': 
    textin = input("In the line below, write the text you want to put into your text document!\n\n") 
    outfile = open(namein + extin, 'a') 
    outfile.write(textin) 
    outfile.flush() 
    print("Great! Now your text file has been updated!") 
    print("Your text file:\n") 
    outfile.close() 
    outfile = open(namein + extin, 'r') 
    print(outfile.read()) 

누군가가 파일 '이 .txt'가 아닌, 하나의 파일을 열 수없는 선택! 단지 오류라고 말하면 파일을 열 수 없습니다. 이 문제를 해결할 방법이 있습니까?

+2

사람들은 서버의 파일 시스템 어디에서나 임의의 파일을 만들 수 있습니까? – sdolan

+1

예, 올바른 출력 형식으로 파일에 데이터를 작성해야합니다. –

+0

@sdolan : "원격":) 나는 좋아한다. –

답변

1

귀하의 코드는베이스 어택입니다. 텍스트를 저장할 파일의 종류를 묻고 그 확장자를 기준으로 확장명을 설정해야합니다. 도트를 넣지 않아도됩니다.

그 후에는 rtf 확장자 나 문서를 사용하여 곧바로 텍스트를 저장할 수 있습니다. DocX 및 pdf는 작동하지 않습니다. 그 유형의 문서를 만든 다음 텍스트를 내용으로 추가해야합니다.

0

다른 형식이 이진 파일로 취급된다는 것을 상상해보십시오 (그러나 Windows를 많이 사용하지 않는 것으로 추측합니다). 이 경우 당신은 바이너리 파일로 열어야합니다 :

outfile = open(namein + extin, 'ab') 

그러나, 내가 바이너리 파일에 추가 거기에 할 수 제한을 것 같아요 ...? [명백하게 아닙니다 - 감사합니다 alexis]. 모두가 지적했듯이, 바이너리 파일이라면, 이것은별로 좋지 않을 것입니다.

더 일반적으로 말해서, 나는 당신이 여기서 읽은 내용에도 불구하고 이것이 우리 모두가 배운 방법입니다. 주변을 놀고 물건을 만들고 장난을 치거나하지 말아야 할 것을 배우는 것. 나는 니콜라스의 똑똑한 것보다 더 똑똑한 것을 느낀다. 그는 그것을 인정하지 않을지도 모르지만, 그는 한 번 바보 같은 작은 프로그램을 쓰고 충격을 받았다. 모든 대답을 알지 못했다. 계속 공부하다. 당신의 프로그램은 멋지다. 그것이 완벽했다면 무엇을 배웠을 것입니까?

+0

'.docx' 또는'.rtf' 그냥 평범한 텍스트로 예상대로 작동한다는 말인가요? 나는 그것이 정말로 많이 의심한다. –

+0

아니요, 그건 제가 말하는 것이 아닙니다. –

+0

예, 그렇지만 OP가 기대하는 것처럼 보입니다. 그리고 이것이 절대적으로 그렇지 않은 방법과 바이너리 모드로 파일을 여는 것이 전혀 도움이되지 않는 방법을 설명하지는 않습니다. –

1

코드에서 "textin"에 일반 텍스트가 들어있는 것처럼 보입니다.이 텍스트는 키보드에서 읽을 수 있습니다. 그런 식으로 Word 문서를 만들 수 없습니다. Word 문서에는 헤더, 글꼴 정보 등이 포함되어 있으므로 각 문서 종류별로 라이브러리를 거쳐야합니다. 예를 들어 Excel 스프레드 시트를 작성하려면 xlwt python 모듈을 사용할 수 있습니다. Word 문서의 경우 this SO question을 참조하십시오. 이고 RTF 파일 용 파이썬 라이브러리는 pyrtf입니다.

단순한 코드를 잘못 이해했거나 오해 했습니까?

추신. 낯선 사람들이 적어도 1 년 동안 서버에 파일을 쓸 수있게 해주는 웹 인터페이스를 활성화하지 마십시오. 합리적으로 안전하게 할 수있는 방법이 있지만, 아직 준비가되어 있지 않은 것으로 확신합니다. (당신이 들어올 수있는 종류의 문제에 대한 힌트는 다른 의견을 참조하십시오).

+0

pyrtf 들어, 그냥 가져 오기 pyrtf 할 마법적으로 작동합니까? – Billjk

+1

@ user1247509 : 아니요, 모든 라이브러리와 마찬가지로, 설명서를보고 API를 연구 한 다음 조금 뒤죽박죽하여 코드에 통합해야합니다. –

+1

간단히 : 그들은 당신을 위해 텍스트를 생성 할 명령을 제공합니다. 그것은 복잡 할 것이다. 내 조언은이 시도 : Word를 사용하여 한 단어 : "안녕하세요"문서를 만듭니다. 저장하고 메모장을 사용하여 문서를 엽니 다. 이것은 당신이 창조해야 할 일의 종류입니다. 나의 충고는 2 개월 동안 바이너리 형식을 따로 보관하고 다른 것을 먼저 작업하는 것이다. – alexis