두 섹션으로 작성한 프로그램이 있습니다.UTF8이 아닌 Python3을 사용하여 ASCII 파일로 파일을 작성하십시오.
첫 번째 파일 이름의 중간에 정수가있는 텍스트 파일을이 형식으로 복사합니다.
file = "Filename" + "str(int)" + ".txt"
사용자는 원하는 수의 파일을 만들 수 있습니다.
프로그램의 두 번째 부분은 내가 문제가있는 부분입니다. 파일 이름의 정수와 일치하는 정수가 파일의 맨 아래에 있습니다. 첫 번째 부분을 마친 후에는 각 파일을 한 번에 하나씩 열고 읽기/쓰기 형식 인 "r+"
으로 엽니 다. 그래서 나는 file.seek(1000)
에 정수가 파일에 어디에 있는지를 알릴 수 있습니다.
내 의견으로는 다음 부분이 쉬워야합니다. 그냥 str (int)을 여기 파일에 써야합니다. 그러나 그렇게 쉬운 것은 아니었다. 그것은 가정에서 리눅스처럼 잘 작동했지만, Windows에서는 어렵다고 판명되었습니다. file.seek(1000)
이후에해야 할 일은 유니 코드 UTF-8을 사용하여 파일에 쓰는 것입니다. 이 프로그램의 나머지 부분에 대한 코드 스 니펫으로이 작업을 수행했습니다. 무슨 일이 일어나고 있는지 이해할 수 있도록 문서화하겠습니다. 이것을 유니 코드로 작성하는 대신, 오래된 영어 ASCII 문자로 작성하는 것이 좋을 것입니다. 결국이 프로그램은 각 파일 맨 아래에 더 많은 데이터를 포함하도록 확장 될 것입니다. 유니 코드로 데이터를 작성하는 것은 일을 매우 어렵게 만듭니다. 데이터를 유니 코드로 변환하지 않고 작성하면 이것이 결과입니다. 이 문자열은 #2 =1534
라고되어 있는데, 그 대신에 #2 =ㄠ㌵433.
누군가가 나에게 내가 뭘 잘못하고 있는지 보여줄 수 있다면 좋을 것입니다. 나는 단지 file.write('1534')
같은 것을 유니 코드 UTF-8로하지 않고 파일에 쓰는 것을 좋아할 것입니다.
while a1 < d1 :
file = "file" + str(a1) + ".par"
f = open(file, "r+")
f.seek(1011)
data = f.read() #reads the data from that point in the file into a variable.
numList= list(str(a1)) # "a1" is the integer in the file name. I had to turn the integer into a list to accomplish the next task.
replaceData = '\x00' + numList[0] + '\x00' + numList[1] + '\x00' + numList[2] + '\x00' + numList[3] + '\x00' #This line turns the integer into Utf 8 Unicode. I am by no means a Unicode expert.
currentData = data #probably didn't need to be done now that I'm looking at this.
data = data.replace(currentData, replaceData) #replaces the Utf 8 string in the "data" variable with the new Utf 8 string in "replaceData."
f.seek(1011) # Return to where I need to be in the file to write the data.
f.write(data) # Write the new Unicode data to the file
f.close() #close the file
f.close() #make sure the file is closed (sometimes it seems that this fails in Windows.)
a1 += 1 #advances the integer, and then return to the top of the loop
UTF-8이 아닙니다. UTF-16BE와 비슷합니다. –
좋아, 나는 나 자신을 확신하지 못했다. 수정 해줘서 고마워. 나는 유니 코드에 익숙하지 않다. 기본적으로 이전 문자열과 동일한 형식으로 새 문자열을 만들었지 만 다른 번호를 사용했습니다. – CigEmacs