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')

文件名变量是客户端发送到迷你服务器的内容。(实际上客户端捕获位置变量)

这是输出:

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

相关内容