Django - 从纯文本中读取和写入

时间:2017-02-06 16:14:16

标签: python django

我正在尝试阅读Django中的纯文本。

基本上我想打开一个文件,获取一个特定的单词,然后根据其他任何内容进行更改。

这就是我所拥有的:

def address_L1():
    file = open("interfaces.txt","r")
    content = file.read()
    file.close()
    address = re.findall('address\s(.*?)\s',open('interfaces.txt','r').read())
    if address:
        print address[0]
    else:
        print 'no Address found!'
    return address[0]

在这里,我打开一个文件,搜索address旁边的单词,192.168.5.5并且效果很好。

def get_interfaces(request):
    address = str(address_L1())
    if 'address' in request.POST:
        write_template(request)#This is for my writing function
    return render(request, 'interfaces.html', {'address':address})

在这里,我将模板中的内容传递给address我的意思是,192.168.5.5将显示在模板中。

<form method="post" action="">{% csrf_token %}
    <label for="your_name">Address: </label>
    <input id="your_name" type="text" name="address" value="{{ address }}">
    <br>
    <input type="submit" class="btn  btn-success btn-xs" value="Guardar Cambios">
</form>

这是我的html,我正在显示我的变量,有一个输入Address,它会显示我的192.168.5.5address变量中的任何内容。

到目前为止一切正常。

现在我正在写我的纯文字。

def write_template(request):
    if request.method == 'POST':
        get_address = address_L1()
        change_address_L1 = request.GET.get("address", None)#Doing something with my input field in template
        filedata= None
        with open('interfaces.txt', 'r') as f:
            filedata = f.readlines()
            filedata=filedata.replace(get_address , change_address_L1)
            with open('interfaces.txt', 'wb') as f:
                f.writelines(filedata)
    return render(request, 'interfaces.html')

基本上我想要做的是获取input address中的内容并替换我输入的内容,我的意思是当我运行我的代码时,我会看到我的输入192.168.5.5我想要删除它值并输入192.168.0.0并更改我的值。当我尝试这样做时,我收到了这个错误:

  

'list'对象没有属性'replace'

我该如何解决这个问题?我怎样才能成功地在我的纯文本中写字? 我究竟做错了什么? 提前致谢!!

1 个答案:

答案 0 :(得分:2)

如错误所示,filedata是一个列表。那是因为f.readlines()为您提供了一个列表,其中每个元素都是文件中的一行。

如果您想将整个事物作为单个字符串,请改为f.read()