2012-05-01 4 views
0

내가하려는 것은 사용자에게 파일 이름을 물어 본 다음이 파일에 내용을 저장하는 것입니다.파일을 저장할 사람이 묻는 메시지

프로그램의 내 부분은 다음과 같습니다

if saving == 1: 
     ask=raw_input("Type the name file: ") 
     fileout=open(ask.csv,"w") 
     fileout.write(output) 

나는 형식을 .csv로 싶지, 내가 다른 옵션을 시도했지만 작동하지 수 있습니다.

답변

5

여기서 문제는 open() 문자열을 전달해야한다는 것입니다. ask은 문자열이 포함 된 변수이지만 다른 문자열 인 ".csv"을 추가하여 파일 이름을 지정하고자합니다. 파이썬에서 +은 문자열의 연결 연산자이므로 ask+".csv"을 의미하고 ask의 내용은 .csv이 뒤 따른다. 현재 가지고있는 것은 csv 변수의 ask 변수를 찾고 오류가 발생합니다. 파일을 열 때

ask = ask if ask.endswith(".csv") else ask+".csv" 
with open(ask, "w") as file: 
     file.write(output) 

the with statement 내 사용을 참고 :

with open(ask+".csv", "w") as file: 
    file.write(output) 

는 또한 사용자가 이미 확장자를 입력 한 첫번째 경우 검사를 수행 할 수 있습니다. 가독성이 뛰어나고 예외적 인 경우에도 파일이 제대로 닫히도록하는 것이 좋습니다.

여기에 파이썬 ternary operator을 사용하여 조건을 기반으로 간단한 변수 할당을 수행합니다 (이미 ".csv"으로 끝나면 설정을 요청하고 그렇지 않으면 연결 함).

또한 출력이 이미 CSV 파일에 적합하다고 가정 할 때 확장 프로그램만으로는 CSV가되지 않습니다. 일반적으로 CSV 데이터를 처리 할 때 the csv module을 확인하고 싶을 것입니다.

2

ask+'.csv'을 사용하여 사용자 입력 끝 부분에 필요한 확장자를 연결해야합니다.

그러나 단순히 파일 이름을 .csv으로 지정하면 쉼표로 구분 된 파일이됩니다. 출력 형식을 지정해야합니다. 이를 위해서는 csvwriter을 사용하십시오. 파이썬 문서에는 이것을 수행하는 방법에 대해 simple examples이 있습니다.

형식이 지정된 쉼표로 구분 된 출력을 직접 생성하지 않는 것이 좋습니다. 이는 놀랍게도 어려운 작업이며 내장 기능이있는 경우 완전히 무의미합니다.

0

변수 askraw_input 이후에 string 유형이됩니다. 당신이 그것에 확장 .CSV를 추가하려면 그래서, 당신은 수행해야 작동합니다

fileout = open(ask + ".csv", "w") 

합니다.

관련 문제