好吧这可能看起来微不足道,但基本上我想要学习的是如何组合我的脚本而不总是写另一个文件只是为了重新打开它并写另一个;因此,创造一个无用的纸张痕迹(即使它是电子的)。
所以说我可以创建两个函数,写入文件,重新打开它并在同一个脚本中启动另一个函数并将其写入另一个文件。我想跳过第一次写,第二次打开。
换句话说,我不想要输出output1 / output2。也许将第一个文本保存为变量中的字符串并重新打开它?
所以这是一个通用代码:
# -*- coding: utf-8 -*-
def do_something():
f= open('input.txt', 'r')
f0=open('output1.txt', 'w')
lines=f.readlines()
for line in lines:
line= line.replace("x","y")
f.write(line)
def do_anotherthing():
f0=open('output1.txt', 'r')
f1= open('output2.txt', 'w')
lines=f0.readlines()
for line in lines:
line=line.replace ("z", "a")
f0.write(line)
if __name__ == '__main__':
do_something()
do_anotherthing()
答案 0 :(得分:1)
拆分你的功能,使他们做一件事。
def switch_x_with_y(line):
return line.replace("x", "y")
def replace_z_with_a(line):
return line.replace("z", "a")
f_output = open("output.txt", "w")
for line in open("input.txt", "r"):
line = replace_x_with_y(line)
line = replace_z_with_a(line)
f_output.write(line)
最重要的是,将文件处理内容与实际处理内容分开。
答案 1 :(得分:1)
您是否尝试使用参数并返回语句?
def do_something():
f= open('input.txt', 'r')
lines=f.readlines()
s = []
for line in lines:
line= line.replace("x","y")
s.append(line)
return s
def do_anotherthing(buffers):
f1= open('output2.txt', 'w')
lines=buffers
for line in lines:
line=line.replace ("z", "a")
f1.write(line)
if __name__ == '__main__':
do_anotherthing(do_something())
答案 2 :(得分:0)
抱歉,很难理解你在问什么。
也许你正在寻找这样的事情?
# -*- coding: utf-8 -*-
def do_lot_of_stuff(funcs):
with open('input.txt', 'r') as in_file, \
open('output1.txt', 'w') as out_file:
for line in in_file.readlines():
for func in funcs:
line = func(line)
out_file.write(line)
if __name__ == '__main__':
do_lot_of_stuff([lambda line: line.replace("x","y"),
lambda line: line.replace("z", "a")])
答案 3 :(得分:0)
你的问题写得不好。如果您想保留数据并进行一些处理,可以使用pandas DataFrame
s。
import pandas as pd
import numpy as np
from pandas import read_csv
df = pd.read_csv('input.txt')
df.columns = ['col'] #I suppose you don't need to split data
df['col'] = misc['col'].str.replace('x', 'y')