with open('source.txt','r') as f: f1=f.read() b=open('dest.txt','w+') b.write(f1)
时间: 2023-07-15 15:13:53 浏览: 199
这段代码的功能是将一个名为source.txt的文件中的内容读取出来,然后将读取到的内容写入到一个名为dest.txt的文件中。具体来说,代码首先使用了with语句来打开source.txt文件,并以只读方式读取文件中的内容,读取到的内容会保存在变量f1中。接着,代码使用open函数来打开dest.txt文件,并以写入和读取方式(w+)打开该文件。然后,代码使用write函数将变量f1中的内容写入到dest.txt文件中。最终,代码会关闭source.txt和dest.txt两个文件。
相关问题
import argparse import numpy as np from openeye import oechem def clear_stereochemistry(mol): clear_atom_stereochemistry(mol) clear_bond_sterochemistry(mol) oechem.OESuppressHydrogens(mol, False, False, False) def clear_atom_stereochemistry(mol): for atom in mol.GetAtoms(): chiral = atom.IsChiral() stereo = oechem.OEAtomStereo_Undefined v = [] for nbr in atom.GetAtoms(): v.append(nbr) if atom.HasStereoSpecified(oechem.OEAtomStereo_Tetrahedral): stereo = atom.GetStereo(v, oechem.OEAtomStereo_Tetrahedral) if chiral or stereo != oechem.OEAtomStereo_Undefined: atom.SetStereo(v, oechem.OEAtomStereo_Tetrahedral, oechem.OEAtomStereo_Undefined) def clear_bond_sterochemistry(mol): for bond in mol.GetBonds(): if bond.HasStereoSpecified(oechem.OEBondStereo_CisTrans): for atomB in bond.GetBgn().GetAtoms(): if atomB == bond.GetEnd(): continue for atomE in bond.GetEnd().GetAtoms(): if atomE == bond.GetBgn(): continue v = [] v.append(atomB) v.append(atomE) stereo = bond.SetStereo(v, oechem.OEBondStereo_CisTrans, oechem.OEBondStereo_Undefined) def abs_smi(x): mol = oechem.OEGraphMol() if oechem.OESmilesToMol(mol, x): clear_stereochemistry(mol) return oechem.OEMolToSmiles(mol) else: return np.nan if __name__ == '__main__': parser = argparse.ArgumentParser(description="Remove stereochemistry from the input data set.") parser.add_argument("--in",dest="infile",help="whitespace-delimited input file",metavar="in.csv") parser.add_argument("--out", dest="outfile", help="output file", metavar="out.csv") args = parser.parse_args() n=0 with open(args.infile, 'r') as ifs: with open(args.outfile, 'w') as ofs: for line in ifs: if n==0: ofs.write(line) n=1 else: parsed = line.strip().split(',') if ('.' not in parsed[0]): ofs.write(f"{abs_smi(parsed[0])},{parsed[1]}\n")
这段代码是一个用于清除分子中立体化学信息的 Python 脚本。它使用了 OpenEye 包中的 oechem 模块来操作分子,并可以通过命令行参数指定输入输出文件。
脚本的主要功能在于定义了三个函数:`clear_stereochemistry`、`clear_atom_stereochemistry` 和 `clear_bond_sterochemistry`,它们分别用于清除分子中的原子立体信息、键立体信息和所有立体信息。这些函数都是通过遍历分子的原子和键,检查是否存在立体信息并将其清除来实现的。
另外,脚本还定义了一个名为 `abs_smi` 的函数,该函数将 SMILES 格式的分子字符串作为输入,并返回一个没有立体信息的 SMILES 字符串。它首先将输入的 SMILES 字符串转换为分子对象,然后调用之前定义的 `clear_stereochemistry` 函数清除立体信息,最后将分子对象转换回 SMILES 格式并返回。
在 `if __name__ == '__main__':` 语句块中,脚本使用 argparse 模块解析命令行参数,然后打开输入文件读取数据并将结果写入输出文件。对于每一行数据,脚本使用 `abs_smi` 函数先清除分子中的立体信息,然后将处理后的 SMILES 字符串写入输出文件。
优化这段代码#csv_combline #encoding = utf-8 import os import csv path = "D:\csv_test\\" for files in os.listdir(path): datas = [] #读取csv文件 for fname in os.listdir(path): if 'csv' in fname: fname_path = path + fname with open(fname_path,'r',encoding = 'latin1') as path: reader = csv.reader(path) #去掉表头第0行,从第一行开始copy数据 reader = list(reader)[1:] for line in render: datas.append(line) eccel_name = 'excle汇总.csv' csv_head = ['name','aaa','bbb'] with open(excel_name,'w') as path: writer = csv.writer(path) #写表头 writer.writerow(csv_head) writer.writerows(datas) print('exlce.csv合并完成')
优化建议如下:
1. 将代码块封装成一个函数,提高代码的可重用性和可维护性。
2. 将常量和变量的命名方式统一,便于代码的阅读和理解。
3. 将文件路径的拼接方式改为os.path.join()方法,增强代码的跨平台兼容性。
4. 使用with语句打开文件,可自动管理文件资源,不需要手动关闭文件,简化代码。
5. 将csv文件读取和写入的编码方式改为'utf-8',避免出现中文乱码问题。
6. 将写入csv文件的表头和数据分别存储在两个列表中,遵循“单一职责原则”,增强代码的可读性和可维护性。
7. 将读取csv文件的代码块修改为生成器表达式,节省内存开销。
8. 将写入csv文件的操作放在try...except块中,避免出现写入失败的情况。
优化后的代码如下所示:
```python
import os
import csv
def combine_csv_files(src_dir, dest_file):
csv_head = ['name', 'aaa', 'bbb']
data_rows = []
try:
for file_name in os.listdir(src_dir):
if file_name.endswith('.csv'):
file_path = os.path.join(src_dir, file_name)
with open(file_path, 'r', encoding='utf-8') as f:
reader = csv.reader(f)
next(reader) # skip header
data_rows.extend(reader) # append rows to data list
with open(dest_file, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(csv_head)
writer.writerows(data_rows)
print(f'CSV files in {src_dir} are combined into {dest_file}')
except Exception as e:
print(f'Error occurs: {e}')
if __name__ == '__main__':
src_dir = r'D:\csv_test'
dest_file = r'D:\csv_test\excle汇总.csv'
combine_csv_files(src_dir, dest_file)
```
阅读全文