下面的代码读取文件并将其存储到数组中,它在数组中搜索特定的用户名,并在数组中更改密码并将数组保存到文件中。
1.文件的第一列可以是 * 或DB名称
1.我想根据输入更改密码
* DB_USR QWERTY
* DB_MGR QWERTY
TESTDB10 DB_USR PQRSTUV
TESTDB20 DB_USR QWERTY
TESTDB30 DB_USR QWERTY
下面是将文件读入数组并搜索数组的代码片段
import sys
import logging
def file_to_array():
file_info="/application/files/Password.txt"
with open (file_info,'rt') ass fh:
pw_lines = [x.strip() for x in fh.readlines() if not x.startswith('#')]
username="DB_USR"
pwd="PQRSTUV"
pw_lines = [re.sub(fr'^(\s*{username}\S+)\s+', fr'\1{pwd}', line) for line in pw_lines] # This line searches for a value DBFS_USR in 2nd column and changes the password in 3rd column
def main():
file_to_array()
我希望下面的正则表达式以两种方式工作,
pw_lines = [re.sub(fr'^(\b{username}\S+)\s+', fr'\1{pwd}', line) for line in pw_lines] # This line searches for a value DB_USR in 2nd column and changes the password in 3rd column
如果输入是./update_pwd TESTDB 10->,则必须更改以TESTDB 10开头的行中的密码
新文件:
* DB_USR QWERTY
* DB_MGR QWERTY
TESTDB10 DB_USR PQRSTUV. -> This value should change
TESTDB20 DB_USR QWERTY
TESTDB30 DB_USR QWERTY
如果输入只是./update_pwd ->,则应该更改以 * 开头的行中的密码
新文件:
* DB_USR PQRSTUV -> This value should change
* DB_MGR QWERTY
TESTDB10 DB_USR QWERTY
TESTDB20 DB_USR QWERTY
TESTDB30 DB_USR QWERTY
到目前为止,正则表达式只对通配符行起作用,但如果我输入数据库名称,则不起作用。
我还想知道是否将文件数据存储在数组中并对其进行插值和更改是一种好方法,或者是否有比这更好的方法?我是python新手,请原谅我的错误
1条答案
按热度按时间i86rm4rw1#
是的,对于您的情况,它是正确的读取文件到内存中,执行您的操作,并将结果写回文件,但你会有问题的大文件,因为内存问题,所以我们要修改一些东西.