如何在 python 中更改多个文件 (gjf)
How to change multiple files (gjf) in python
所以我试图更改多个文件中的内容,从文件中的字母 Cl 到 F。
首先要注意的是 python 无法读取我的输入文件 (gjf),因此我必须先将它们转换为 txt
文件。
我可以单独执行每个步骤,但是当我将它们放在一起并进入循环时,它似乎不起作用,有人可以帮忙吗?
代码:
#import modules
import os
#makes a path to CWD and stored as a string
cwd = str( os.getcwd() )
#finds the root, fodlers and and all the files in the cwd and stores them as
the variable 'roots' dirs and allfiles
for root, dirs, allfiles in os.walk(r'%s'%(cwd)):
continue
#make a collection of gjf files in the folder
my_files=[]
for i in range(0,len(allfiles),1):
if allfiles[i].endswith('.gjf'):
my_files.append(allfiles[i])
else:continue
#makes all gjf files in txt files
for i in range(0,len(my_files),1):
base= os.path.splitext(my_files[i])
src=my_files[i]
os.rename(src, base +'.txt')
#replaces all the Cl ligands with F
for i in range(0,len(my_files),1):
s = open("my_files[i]").read()
s = s.replace('Cl', 'F')
f = open("my_files[i]", 'w')
f.write(s)
f.close()
`
您不需要将其转换为 txt
。另外,使用 glob
获取一种类型的所有文件。
检查此测试示例:
代码:
from glob import glob
# prepare test file
with open('test.gjf', 'w') as f:
f.write('Cl foo bar ClbarCl')
# print its content
with open('test.gjf', 'r') as f:
content = f.read()
print('Before:')
print(content)
list_of_files = glob('*.gjf') # get list of all .gjf files
for file in list_of_files:
# read file:
with open(file, 'r') as f:
content = f.read()
# replace Cl to F:
new_content = content.replace('Cl', 'F')
# Write changes:
with open(file, 'w') as f:
f.write(new_content)
# Test result
with open('test.gjf', 'r') as f:
content = f.read()
print('After:')
print(content)
输出:
Before:
Cl foo bar ClbarCl
After:
F foo bar FbarF
所以我试图更改多个文件中的内容,从文件中的字母 Cl 到 F。
首先要注意的是 python 无法读取我的输入文件 (gjf),因此我必须先将它们转换为 txt
文件。
我可以单独执行每个步骤,但是当我将它们放在一起并进入循环时,它似乎不起作用,有人可以帮忙吗?
代码:
#import modules
import os
#makes a path to CWD and stored as a string
cwd = str( os.getcwd() )
#finds the root, fodlers and and all the files in the cwd and stores them as
the variable 'roots' dirs and allfiles
for root, dirs, allfiles in os.walk(r'%s'%(cwd)):
continue
#make a collection of gjf files in the folder
my_files=[]
for i in range(0,len(allfiles),1):
if allfiles[i].endswith('.gjf'):
my_files.append(allfiles[i])
else:continue
#makes all gjf files in txt files
for i in range(0,len(my_files),1):
base= os.path.splitext(my_files[i])
src=my_files[i]
os.rename(src, base +'.txt')
#replaces all the Cl ligands with F
for i in range(0,len(my_files),1):
s = open("my_files[i]").read()
s = s.replace('Cl', 'F')
f = open("my_files[i]", 'w')
f.write(s)
f.close()
`
您不需要将其转换为 txt
。另外,使用 glob
获取一种类型的所有文件。
检查此测试示例:
代码:
from glob import glob
# prepare test file
with open('test.gjf', 'w') as f:
f.write('Cl foo bar ClbarCl')
# print its content
with open('test.gjf', 'r') as f:
content = f.read()
print('Before:')
print(content)
list_of_files = glob('*.gjf') # get list of all .gjf files
for file in list_of_files:
# read file:
with open(file, 'r') as f:
content = f.read()
# replace Cl to F:
new_content = content.replace('Cl', 'F')
# Write changes:
with open(file, 'w') as f:
f.write(new_content)
# Test result
with open('test.gjf', 'r') as f:
content = f.read()
print('After:')
print(content)
输出:
Before:
Cl foo bar ClbarCl
After:
F foo bar FbarF