我正在尝试重命名文件夹中的所有文件,并从文件名中删除空格。所有文件名称中的日期均为YY-mm-dd。以下是到目前为止我已经设法创建的内容。
但是,运行时给我一个“ TypeError:从第一个arg开始的字符串必须是str或str的元组,而不是_sre.SRE_Pattern”
import os
import datetime
import re
today = datetime.datetime.now()
path = "/some/path/"
regex = re.compile(".*" + today.strftime("(%Y-%m-%d)") + ".*(.log$)", re.IGNORECASE)
for file in os.listdir(path):
os.rename(file.startswith(regex), file.replace(" ","_")
注意:我知道在当前状态下,它将查找今天的日期,而不是今天以外的所有日期。我将其保持原样进行测试,并在匹配后自动将其与正则表达式匹配。
先谢谢您。
答案 0 :(得分:0)
错误的答案似乎是正确的,startswith
的参数必须是字符串,而不是编译的正则表达式模式。因此,基本上它告诉您startswith
不能使用正则表达式模式作为参数。嘿-这就是正则表达式的目的!
您应使用正则表达式模式^
表示行的开头,然后将文件名与该模式匹配。
这是一个粗略的例子:
...
regex = re.compile("^.*" + today.strftime("(%Y-%m-%d)") + ".*(.log$)", re.IGNORECASE)
for file in os.listdir(path):
if regex.match(file):
# do something
答案 1 :(得分:0)
您的file.startswith(regex)将返回True或False。我认为您要重命名与您的正则表达式匹配的文件。您需要在for循环下使用另一个“ if”语句来检查文件名是否以正则表达式开头,然后您需要运行os.rename:
sudo service couchbase-server start