저는 코딩에 익숙하지 않아 프로그램 사용자의 입력을 다른 줄의 csv 파일로 설정하는 방법을 모릅니다. 현재하는 일은 모두 한 줄에 인쇄하는 것이므로 유용하지 않습니다. 어떤 도움을 주시면 감사하겠습니다. 또한 코드 품질이 좋지 않아 죄송합니다. 최대한 빨리 배우고 있습니다!
코드는 다음과 같습니다.
import csv
def filecreator():
print("----------INPUT--DATA----------")
filename = input("File Name: ")
print("A file has been created named",filename,".csv")
print("-------------------------------")
with open(filename+".csv", 'w', newline='') as csvfile:
w = csv.writer(csvfile, delimiter=',')
save = "y"
while save == "y":
device = input("Source of data: ")
time_of_data_collection = ("When: ")
first_data_set = input("Column 3 Title: ")
second_data_set = input("Column 4 Title: ")
#Here is where I want to have the break for it to be printed on a
#second line
drone = int(input("Drone Number: "))
time = int(input("Time: "))
temperature = input("Enter temperature: ")
windspeed = input("Enter windspeed: ")
save = input("Would you like to save? Y/N: ")
if save.lower() == "y":
w.writerow([drone, time, temperature, windspeed])
print("---Your data has been saved---")
print("Program closed.")
def viewdata():
print("----VIEW-DATA----")
filename = input("File Name: ")
print("-----------------")
f = open(filename)
csv_f = csv.reader(f)
for row in csv_f:
print (row)
print("-----------------")
userinput = input("Enter I to input data, V to view data or C to do calculations: ")
if userinput in ("I", "i"):
print("\nYou have chosen to input weather data to the program")
filecreator()
elif userinput=="V" or "v":
print("\nYou have chosen to view weather data.")
viewdata()
elif userinput=="C" or "c":
print("\nYou have chosen to perform calculations with weather data.")
- 답변 # 1
- 답변 # 2
이 줄을 변경하면됩니다.
with open(filename+".csv", 'w', newline='') as csvfile:
"w"는 이전 파일을 덮어 쓰는 새 파일을 작성하기위한 것입니다.
대신 "a +"로 변경하면 덮어 쓰지 않고 파일에 추가됩니다.
with open(filename+".csv", 'a+', newline='') as csvfile:
open () 메서드에 대한 몇 가지 인수가 있습니다.이를보고 작동 방식을 배우는 것이 유용 할 수 있습니다.
- 답변 # 3
테스트 할 데이터 파일이 없지만 화면의 다음 줄로 이동하려면 필요한 위치를 추가하기 만하면됩니다.
print("\n")
또는 writerow 메소드는 매번 새 행을 작성해야합니다. 다음 줄로 이동하려면 필요한 곳에 "\ n"을 입력하십시오.
데이터를 쓸 때 "\ n"을 추가 할 수 있습니다.
w.writerow([drone, time, "\n", temperature, windspeed])
그러나 파일을 읽어야 할 때주의하십시오. 도움이 되었기를 바랍니다. 그렇지 않으면 더 자세한 정보와 샘플 입력 및 출력 데이터를 제공하십시오.
관련 자료
- bash에서 여러 csv 파일을 결합하여 행을 다른 행으로 분할
- javascript - XMLHttpRequest 및 FormData의 일부로 여러 파일 보내기
- Django는 여러 개의 업로드 된 파일을 표시합니다
- javascript - 여러 오디오 파일을 동시에 재생하는 구성 요소 (클릭시) Aframe webVR
- awk - Linux의 여러 폴더에있는 파일에서 특정 열로 새 파일을 만드는 방법은 무엇입니까?
- python - FOR 루프의 여러 목록에서 여러 요소를 인쇄하는 방법은 무엇입니까?
- python - 하나의 txt 파일을 여러 txt 파일로 분리
- awk - Bash에서 여러 텍스트 파일의 첫 번째 열 복제
- macos - vscode에서 여러 파일을 열 때 실제로 첫 번째 파일 만 메모리에로드됩니다
- linux - bash를 사용하여 텍스트 파일에서 제거 된 행을 원래 파일로 다시 복사
- apache spark - Hadoop을 사용하여 프로그래밍 방식으로 관련되지 않은 여러 csv 파일을 포함하는 파일 압축 해제
- json - 동일한 인수로 Multiple 함수를 실행하지만 R에서 plumber를 사용하여 첫 번째 함수를 건너 뛰고 두 번째 함수를 인쇄합니다
- python - S3 boto3에서 여러 파일 및 특정 패턴을 삭제하는 방법
- python - 서브 플롯에 여러 줄 플로팅
- text processing - awk 질문 - 고유 한 날짜에 대해서만 추가 라인을 인쇄하는 방법
- r - 여러 디렉터리를 입력하고 하위 디렉터리를 입력하고 bash를 사용하여 모든 파일을 한 디렉터리 위로 이동합니다
- vim - 레지스터에서 여러 줄의 명령을 입력하는 방법은 무엇입니까?
- java - 여러 CSV 파일에서 ID 및 외부 ID를 얻는 방법
- python - 여러 폴더의 csv 파일을 하나의 데이터 프레임에 추가
- audio - ffmpeg - 여러 파일의 루핑 스트림
수집 된 데이터 위에 헤더 열을 설정하려면 요청하세요.전에데이터를 요청하는 루프를 사용하여 데이터 항목에 대해 수행하는 것과 동일한 방식으로 한 번 작성합니다.
w.writerow([drone_header, time_header, temperature_header, windspeed_header])
대신 열 헤더 정보를 포함합니다.각 전화
csv_writer.writerow( [...] )
한 줄을 씁니다. 사용하면 모든 데이터를 한 번에 쓸 수 있습니다.csv_writer.writerows( [ [...], [...], [...], ... )
목록 목록을 제공합니다. 각 내부 목록은 데이터의 한 행을 나타냅니다.여기에서 더 많은 것을 읽으십시오 :
csv.csvwriter.writerow
csv.csvwriter.writerows
csv 예
<시간 />여전히 수정해야 할 다른 사항이 많이 있습니다.
elif userinput=="V" or "v":
과elif userinput=="C" or "c":
시간을 정수로 입력합니까?
사용자 입력 위생 없음 (빈 입력, 유효하지 않은 숫자 등)
현재 코드는 입력, 출력, 파일 쓰기 등의 혼합입니다. 일반적으로 좀 더 잘 구조화하여 입력, 처리, 출력 (할 수있다믹스 앤 매치하지만 더 어렵게 만듭니다.
다음과 같이 수정할 수 있습니다.
화면 출력 :
생성 된 파일 :