python-3.x - Python3 字符串格式化与 . 在前面失踪
问题描述
我正在尝试编写文件传输程序并尝试制作要跳过处理的文件列表:脚本本身,以及 VI 备份和交换文件(server.py~ 和 .server.py.swp)
我无法获得 vi 交换文件的正确名称 .server.py.swp,开头的点丢失,我得到 server.py.swp
我首先使用 .server.py.swp 硬编码创建列表(我对其他进行了硬编码,但在我为它们工作的字符串格式后删除了它们)。然后我使用字符串格式添加脚本文件和备份文件。我附加字符串“test”用于调试目的并作为分隔符。最后,我尝试使用两种不同的方法添加带有字符串格式的交换文件,并使用前导 . 在前面失踪。
要运行我所指的server.py中的代码,我有一个正在开发的client.py。
客户端.py
import os, socket
port = 7777
host = socket.gethostname()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
服务器.py
import os, socket
port = 7777
host = socket.gethostname()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(1)
while True:
clientsocket, address = s.accept()
print(f"Connection from {address} has been established!!!")
# https://stackoverflow.com/questions/4934806
File = os.path.realpath(__file__)
dir = os.path.dirname(File)
os.chdir(dir)
server_files = os.listdir(".")
skip = [".server.py.swp"]
# https://pythonguides.com/python-get-filename-from-the-path/
skip.append(os.path.basename(File))
skip.append(os.path.basename(f"{File}~"))
skip.append(f"test")
skip.append(os.path.basename(f".{File}.swp"))
skip.append(os.path.basename(".{}.swp".format(File)))
print(f"Skip: {skip}")
# !End
我在服务器上得到不正确的输出
Skip: ['.server.py.swp', 'server.py', 'server.py~', 'test', 'server.py.swp', 'server.py.swp']
我想要的输出将类似于
Skip: ['.server.py.swp', 'server.py', 'server.py~', 'test', '.server.py.swp', '.server.py.swp']
我错过了什么吗?我试图逃避 . 通过投入\.
无济于事。
编辑:我的目标是跨平台,但现在我正在 Windows 上开发和测试这个。
解决方案
鉴于这File
似乎是一个合格的路径,而不仅仅是一个文件名,.
在调用之前加上前缀basename
什么都不做;if File
is C:\foo\bar.py
(会打印额外\
的 s) or /foo/bar.py
or even ../relative/bar.py
, 前缀 a.
将它放在最后的目录分隔符 ( \
or /
) 之前,它被 . 剥离basename
。如果要在文件名前加上前缀,请在剥离目录后.
添加,例如:
skip.append("." + os.path.basename(f"{File}.swp"))
或者
skip.append(".{}.swp".format(os.path.basename(File)))
推荐阅读
- c++ - C ++:执行命令行时出现问题:Singleton::theInstance 的未定义引用
- python - Python 使用代理运行 selenium Chrome
- javascript - 在使用 Javascript React 发送到后端之前,如何在前端将 .docx 文件转换为 PDF
- javascript - 如何在函数中转换我的类?
- string - 旋转变量中的文本行
- python-3.x - 为什么这个简单的 MP 用于查找 2 个四元数之间的角速度会失败?
- ocaml - Ocaml 图形事件
- c# - 遍历字符串数组并填充字典类型
作为单词,出现计数—— - javascript - 如何在将单选按钮与文本框值进行比较时将其设置为 true?
- javascript - Vanilla JavaScript - 获取单选按钮的值并在 DOM 中显示该值