【发布时间】:2023-12-22 10:12:02
【问题描述】:
我有以下代码:
基本上是从每个文件中拉取md5。问题在于有空格的文件,程序的解决方案可以考虑这些文件而不是跳过它们。
def onepath(archivo):
logging.basicConfig(filename=salida,filemode="w", format='%(message)s', level=logging.DEBUG)
for filename in (file for file in os.listdir(archivo)):
with open(filename) as checkfile:
logging.info("MD5 " + "(%s) = " % filename + hashlib.md5(checkfile.read()).hexdigest())
我正在阅读有关方法 shlex 的信息,但不确定如何实现。
你能帮帮我吗?
我认为带有空格的文件正在显示。我做了一个简短的 sn-p,但我没有遇到一个我无法控制 Linux 如何理解文件名上的空格的问题,以便执行以下操作:
files_destino = [f for f in os.listdir(os.path.join(sys.argv[1].strip()))]
for i in files_destino:
print i
subprocess.call(["cp","-v", "%s" % i,"/tmp/"])
在shell中显示:
bash-3.2$ ./comodin.py ./espacio/
Boxx view.pdf
cp: Boxx view.pdf: No such file or directory
hola.txt
hola.txt -> /tmp/hola.txt
bash-3.2$
【问题讨论】:
-
为什么引号中有“空格”?
-
对不起。在这里写问题:)
-
您是指包含 U+0020 字符的文件吗?为什么这很重要?
-
在一个文件夹内有一系列文件,例如"用户手册_v1.pdf","用户手册_v2.pdf" .需要拉他们的md5。因此,当行“....for filename in (file for file in os.listdir(archivo)):....”采用“user”和“manual_v1.pdf”、“user”、“manual_v2.pdf”时当仅存在 2 个文件时,作为四个不同的文件。我希望我解释得更好。
-
file 是预定义的文件类型对象,您可能希望将文件变量重命名为其他名称。阅读时会造成混乱。还有,os.listdir 输出的是一个列表,有什么理由再重复一遍吗?
标签: python for-loop logging md5 spaces