Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从多个文件中删除六个.b_Python_Bash - Fatal编程技术网

Python 从多个文件中删除六个.b

Python 从多个文件中删除六个.b,python,bash,Python,Bash,我在项目中有几十个文件,我想将所有出现的six.b(“…”更改为b”…。我可以用某种正则表达式bash脚本来实现这一点吗?完全可以用Python实现,但我会先备份我的项目树,然后: import re import os indir = 'files' for root, dirs, files in os.walk(indir): for f in files: fname = os.path.join(root, f) with open(fna

我在项目中有几十个文件,我想将所有出现的
six.b(“…”
更改为
b”…
。我可以用某种正则表达式bash脚本来实现这一点吗?

完全可以用Python实现,但我会先备份我的项目树,然后:


import re
import os

indir = 'files'

for root, dirs, files in os.walk(indir):
    for f in files:
        fname = os.path.join(root, f)
        with open(fname) as f:
            txt = f.read()
        txt = re.sub(r'six\.(b\("[^"]*"\))', r'\1', txt)
        with open(fname, 'w') as f:
            f.write(txt)
        print(fname)



这完全可以在Python中实现,但我会首先备份我的项目树,然后:


import re
import os

indir = 'files'

for root, dirs, files in os.walk(indir):
    for f in files:
        fname = os.path.join(root, f)
        with open(fname) as f:
            txt = f.read()
        txt = re.sub(r'six\.(b\("[^"]*"\))', r'\1', txt)
        with open(fname, 'w') as f:
            f.write(txt)
        print(fname)



一个相对简单的bash解决方案(将*.foo更改为*.py或任何适合您情况的文件名模式):

注:

  • 它将只考虑/修改与模式匹配的文件

  • 它将为它修改的每个文件创建一个“.bak”副本

  • 它不会处理嵌入的
    \”
    ,例如
    six.b(“asdf\”)
    ,但我不知道有没有一个简单的解决方案来解决这个问题,而不知道您正在处理的文件的更多信息。
    six.b(“”
    的结尾是否保证是行中最后一个


  • 一个相对简单的bash解决方案(将*.foo更改为*.py或任何适合您情况的文件名模式):

    注:

  • 它将只考虑/修改与模式匹配的文件

  • 它将为它修改的每个文件创建一个“.bak”副本

  • 它不会处理嵌入的
    \”
    ,例如
    six.b(“asdf\”)
    ,但我不知道有一个简单的解决方案可以解决这个问题,而不知道更多关于您正在操作的文件的信息。
    six.b(“”
    的结尾是否保证是行中最后一个
    ?等等


  • 是否出现了不应更改的
    six.b
    ?e、 g.
    six.begin
    或诸如此类。您将其标记为Python,您是否也对Python解决方案持开放态度?是否出现了不应更改的
    six.b
    ?e、 g.
    six.begin
    或诸如此类。您将其标记为Python,您也对Python解决方案持开放态度吗?这不就是要保留括号,将
    six.b(“asdf”)
    变成
    b(“asdf”)
    ?我认为它还为带有转义引号的字符串提供了错误的输出,比如
    six.b(“asdf”)
    。它也不处理
    引号或三重引号,但至少它不会触及这些引号,而不会产生扭曲的输出。这难道不会保留括号,将
    six.b(“asdf”)
    变成
    b(“asdf”)吗
    ?我认为它还为带有转义引号的字符串提供了错误的输出,如
    six.b(“asdf\”)
    。它也不处理
    引号或三重引号,但至少它不处理这些引号,而是生成损坏的输出。