use*_*766 8 ls python filenames
如果 Python 将文件保存在包含异常符号的扩展 4(Linux) 分区上(到目前为止未覆盖的方括号 [] )。它会自动引用文件名。
例如:
file[].txt
Run Code Online (Sandbox Code Playgroud)
将被保存为
'file[].txt'
Run Code Online (Sandbox Code Playgroud)
在 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')
Run Code Online (Sandbox Code Playgroud)
文件名变量是客户端发送给小型服务器的东西。(实际上是客户端捕获位置变量)
这是输出:
file[].txt
this is filename: file[].txt
this is filename: file[].txt
Run Code Online (Sandbox Code Playgroud)
此外,相关部分
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
Run Code Online (Sandbox Code Playgroud)
小智 6
实际文件名是:
file[].txt
Run Code Online (Sandbox Code Playgroud)
你的python程序在这里没有任何错误。引号由ls
.
我能够使用以下方法重现它:
ls -lah --quoting-style=shell
Run Code Online (Sandbox Code Playgroud)
但是当我选择literal
作为引用风格时:
ls -lah --quoting-style=literal
Run Code Online (Sandbox Code Playgroud)
那么带[
或的文件]
不带引号列出。请注意,您ls
可能在不同的系统上有不同的默认参数。
引用的文件名仍然与ls -lah
输出中的其他文件名对齐这一事实让我认为引号可能是由您的ls
命令添加的,而不是文件名的真实部分。目的可能是表明“该文件名需要在命令行中引用,否则可能会发生意外情况”。
尝试在命令行上创建一个类似的文件名,看看会发生什么:
touch /tmp/file\[\].txt
ls -lah /tmp
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2691 次 |
最近记录: |