Python에서 파일을 저장할 때 파일 이름에 작은따옴표를 피하는 방법은 무엇입니까?

Python에서 파일을 저장할 때 파일 이름에 작은따옴표를 피하는 방법은 무엇입니까?

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

관련 정보