Python拡張ファイルにファイルを保存する場合4(Linux)異常な記号を含むパーティション(これまでカバーされていない角括弧[])が含まれている場合)自動的にファイル名を引用します。
例えば:
file[].txt
として保存されます
'file[].txt'
Linuxでは、拡張4パーティション「file []。txt」が有効なファイル名です。
なぜそれが起こっているのですか?それは回避できますか?ファイル名の最初と最後の記号を削除することで回避策を作成できますが、アプリを多くのプラットフォームで実行する予定です。だから私はむしろ芽の早い段階でそれをニップしたいと思います。
Python3はAMD64プラットフォームのLinux Gentooとext4パーティションで使用されます。
pythonコード:
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
実際のファイル名は次のとおりです。
file[].txt
あなたのpythonプログラムはここで問題ありません。引用はls
によって行われます。
私はそれを使ってそれを再現することができました:
ls -lah --quoting-style=Shell
しかし、引用スタイルとしてliteral
を選択すると、
ls -lah --quoting-style=literal
次に、[
または]
は引用符なしでリストされています。 ls
は、システムによってデフォルトの引数が異なる場合があることに注意してください。
引用符で囲まれたファイル名がls -lah
出力の他のファイル名と依然として整合しているという事実により、引用符はおそらくls
コマンドによって追加されたものであり、ファイル名の実際の部分ではないと思われます。目的はおそらく、「このファイル名はコマンドラインで引用符で囲む必要があります。そうしないと、予期しないことが発生する可能性があります。」
コマンドラインで同様のファイル名を作成して、何が起こるかを確認してください。
touch /tmp/file\[\].txt
ls -lah /tmp
最後の2つの応答は正しかった。
GUIファイルブラウザでファイル名の元のソースを確認しましたが、問題ありません。 「ls」ユーティリティが使用されている場合にのみ発生します。したがって、python問題ではありませんでしたが、 'ls'ユーティリティの癖があります。
つまり、 'ls'コマンドは、何らかの理由で単一引用符を追加しました。元のファイルには、「ls」ユーティリティで引用符も含まれています。
皆様、ご参加ありがとうございました。