我with今天第一次遇到了Python 语句.我已经使用Python几个月了,甚至不知道它的存在!鉴于其地位有点模糊,我认为值得问:
with设计用于的Python 语句? try..finally比它更好用的情况with?我的应用程序需要在静态文件夹内的不同文件夹中上传不同的配置文件图像。还有一件事,我没有使用模型,我只想拍摄我在html输入文件中选择的图片并将其复制到特定文件夹。
这是我的文件夹树。我要保存上传的图像MYPROJECTFOLDER/static/profile/<TheUserSpecificFolder>/的位置是我不想使用的位置MEDIA_ROOT,因为在媒体根目录中,我无法为每个用户创建一个特定的文件夹。(我不知道这是否正确,是否可以在/ media /文件夹中为每个用户创建一个特定的文件夹而不使用ImageField或FileField,请告诉我)。
这是我的文件夹树:
MYPROJECTFOLDER
|
|------myproject/
|
|------myapp/
|
|------static
| |-------profile
| |------folder_user1
| |------ uploadedpicture.jpg #Here is where I want to upload
| |------folder_user2
Run Code Online (Sandbox Code Playgroud)
这是我的 uploadpic.html
<form action="{% url 'upload' %}" enctype="multipart/form-data" method="POST">
{% csrf_token %}
<input type="file" name="avatar" accept="image/gif, image/jpeg, image/png">
<button type="submit">Upload</button>
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的views.py
from django.shortcuts import render, HttpResponse, redirect
from . import forms
import os
def upload(request):
img = request.FILES['avatar']
#This just create the …Run Code Online (Sandbox Code Playgroud) 我编写了一个脚本,从两个不同的文件中读取数据并相应地继续.但是,当我编写脚本时,我的印象是我正在阅读的第一个文件只有两行,遗憾的是后来这已经改变了.
我的代码提取前两行并将数据传递给另一个函数,然后通过多个其他函数继续进行计算.
现在我正在做这样的事情:
try:
file = open(myfile, 'r')
for line in file:
if line[0] != '|':
name = line.strip('\n')
else:
data = line.strip('|\n')
Run Code Online (Sandbox Code Playgroud)
通常,该文件如下所示:
Samantha
|j&8ju820kahu9|
Run Code Online (Sandbox Code Playgroud)
现在,遗憾的是,我可以拥有一个可以有多行的文件,如下所示:
Andy
|o81kujd0-la88js|
Mathew
|a992kma82nf-x01j4|
Andrew
|01ks83nnz;a82jlad|
Run Code Online (Sandbox Code Playgroud)
有没有办法可以从文件中一次提取两行?处理它们然后继续提取两个?所以抓住前两行,给它们命名+数据,将它传递给我的函数,最后打印所需的内容,然后得到新的两行,依此类推.
请指教.
我知道使用它会好很多
with open(...)...
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有使用过的情况
open(...)
Run Code Online (Sandbox Code Playgroud)
在任何情况下都有优势。