Python이 예외 기호를 포함하는 확장 4(Linux) 파티션에 파일을 저장하는 경우(지금까지 대괄호 []가 발견되지 않음) 파일 이름을 자동으로 인용합니다.
예를 들어:
file[].txt
다음으로 저장됩니다
'file[].txt'
Linux에서는 확장 4 파티션 "file[].txt"가 유효한 파일 이름입니다.
왜 이런 일이 발생하며 피할 수 있나요? 파일 이름의 첫 번째와 마지막 기호를 제거하여 솔루션을 만들 수 있지만 내 응용 프로그램을 여러 플랫폼에서 실행할 계획입니다. 그래서 차라리 일찍 싹을 자르는 편이 낫습니다.
Python3은 AMD64 플랫폼 Linux Gentoo, ext4 파티션에서 사용됩니다.
파이썬 코드:
print('\ndebug:triggered sf mode, name of file below \n')
clientsocket, addr = serversocket.accept()
filename = clientsocket.recv(10240)
filename = filename.decode('UTF-8')
app_output(filename)
mode = 'valid'
clientsocket.close()
clientsocket, addr = serversocket.accept()
incmdata = '1'
somefile = open(filename, 'w+')
somefile.close()
while len(incmdata) !=0:
incmdata = clientsocket.recv(1024 * 8)
print('this is filename: ', filename)
somefile=open(filename, 'ab')
somefile.write(incmdata)
somefile.close()
app_output('file supposedly recieved')
filename 변수는 클라이언트가 미니서버로 보내는 변수입니다. (실제로 클라이언트는 위치 변수를 캡처합니다)
출력은 다음과 같습니다.
file[].txt
this is filename: file[].txt
this is filename: file[].txt
그 밖에도 관련 부품
ls -lah
-rw-r--r-- 1 dimko dimko 269 Sep 11 10:00 file_open.txt
-rw-r--r-- 1 dimko dimko 93 Sep 11 09:05 file_open.txt~
-rw-r--r-- 1 dimko dimko 5 Sep 14 11:24 'file[].txt'
drwxr-xr-x 3 dimko dimko 4096 Sep 14 11:21 .idea
-rw-r--r-- 1 dimko dimko 7635 Sep 14 11:20 LanSwissKnife.py
답변1
실제 파일 이름은 다음과 같습니다.
file[].txt
여기에는 Python 프로그램에 아무런 문제가 없습니다. 견적은 으로 완성됩니다 ls
.
다음을 사용하여 재현할 수 있었습니다.
ls -lah --quoting-style=shell
literal
하지만 참조 스타일로 선택하면 다음과 같습니다 .
ls -lah --quoting-style=literal
[
그런 다음 따옴표를 사용하거나 사용하지 않고 파일을 나열합니다 . 시스템마다 기본 매개변수가 다를 수 있습니다 ]
.ls
답변2
인용된 파일 이름이 출력에서 여전히 다른 파일 이름과 정렬되어 있다는 사실로 인해 인용문이 실제로 파일 이름의 일부가 아니라 명령 ls -lah
에 의해 추가되었을 수 있다고 생각됩니다 . ls
그 목적은 아마도 "이 파일 이름은 명령줄에서 인용되어야 합니다. 그렇지 않으면 예상치 못한 일이 발생할 수 있습니다"를 나타내기 위한 것입니다.
명령줄에서 비슷한 파일 이름을 만들어 보고 어떤 일이 일어나는지 확인하세요.
touch /tmp/file\[\].txt
ls -lah /tmp