Python 使用Regex筛选目录,并将筛选后的文件输出到另一个目录

Python 使用Regex筛选目录,并将筛选后的文件输出到另一个目录,python,regex,python-3.x,glob,os.path,Python,Regex,Python 3.x,Glob,Os.path,我只是想创建一个Python3程序,该程序运行在特定目录中的所有.sql文件中,然后应用我的正则表达式来添加;在某个实例之后,将对文件所做的更改写入一个单独的目录,其各自的文件名相同 因此,如果在“/home/files”目录中有file1.sql和file2.sql,则在运行程序后,输出应将这两个文件写入“/home/new_files”,而不更改原始文件的内容 这是我的密码: import glob import re folder_path = "/home/files/d_d" file

我只是想创建一个Python3程序,该程序运行在特定目录中的所有.sql文件中,然后应用我的正则表达式来添加;在某个实例之后,将对文件所做的更改写入一个单独的目录,其各自的文件名相同

因此,如果在“/home/files”目录中有file1.sql和file2.sql,则在运行程序后,输出应将这两个文件写入“/home/new_files”,而不更改原始文件的内容

这是我的密码:

import glob
import re
folder_path = "/home/files/d_d"
file_pattern = "/*sql"
folder_contents = glob.glob(folder_path + file_pattern)


for file in folder_contents:
    print("Checking", file)
for file in folder_contents:
    read_file = open(file, 'rt',encoding='latin-1').read()
    #words=read_file.split()
    with open(read_file,"w") as output:
        output.write(re.sub(r'(TBLPROPERTIES \(.*?\))', r'\1;', f, flags=re.DOTALL))
我收到一个文件名太长的错误:“创建外部表”,而且我也不太确定在代码中把输出路径(/home/files/new_dd)放在哪里


有什么想法或建议吗?

使用
read\u file=open(file'rt',encoding='latin-1')。read()
文件的全部内容被用作文件描述符。这里提供的代码迭代使用glob.glob模式打开读取、处理数据和打开写入的文件名(假设文件夹
newfile\u sqls
已经存在, 否则,将出现错误
FileNotFoundError:[Errno 2]没有这样的文件或目录


使用
read\u file=open(file'rt',encoding='latin-1').read()
文件的全部内容被用作文件描述符。这里提供的代码迭代使用glob.glob模式打开读取、处理数据和打开写入的文件名(假设文件夹
newfile\u sqls
已经存在, 否则,将出现错误
FileNotFoundError:[Errno 2]没有这样的文件或目录


只需运行我的目录并通过添加regex元素对其进行过滤,然后保存文件。有什么不明白的?你能举一个
文件夹内容的例子吗,可能一个包含该变量内容的列表只是在我的目录中运行,并通过添加regex元素对其进行过滤,然后保存文件。有什么不明白的?您能举一个
文件夹内容的例子吗?可能是一个包含该变量内容的列表
import glob
import os
import re

folder_path = "original_sqls"
#original_sqls\file1.sql, original_sqls\file2.sql, original_sqls\file3.sql
file_pattern = "*sql"
# new/modified files folder
output_path = "newfile_sqls"

folder_contents = glob.glob(os.path.join(folder_path,file_pattern))

# iterate over file names
for file_ in [os.path.basename(f) for f in folder_contents]:

    # open to read
    with open(os.path.join(folder_path,file_), "r") as inputf:
        read_file = inputf.read()

    # use variable 'read_file' here
    tmp = re.sub(r'(TBLPROPERTIES \(.*?\))', r'\1;', read_file, flags=re.DOTALL)

    # open to write to (previouly created) new folder
    with open(os.path.join(output_path,file_), "w") as output:
        output.writelines(tmp)