【Python基础学习】—文件和文件夹操作

本文聚焦Python文件与文件夹操作。介绍了文件I/O操作,如打开、读写、重命名等;文件夹操作,包括创建、删除等;还提及文件上传的FTP和html表单方式,以及基于Flask、Django等框架的文件接收操作,助力文件自动化编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

日常开发过程中,我们常常需要用到文件以及文件夹操作,这些操作在linux命令行下本身就有,但是一旦我们需要将文件进行自动化操作,如写入、遍历读取、或者上传文件等等操作,我们就需要在Python下进行文件自动化操作的编程。本文主要介绍这些文件、文件夹操作,并作了一定归纳。

 

一、Python文件I/O操作

1、 打开文件:file object = open(file_name [, access_mode][, buffering])
注:access_mode决定了打开文件的模式:只读,写入,追加等。默认文件访问模式为只读(r),其他常用模式如下:


2、 file对象属性:
(1) file.closed——如果已经关闭则返回True,否则返回False;
(2) file.mode——返回打开的模式;
(3) file.name——返回文件名称;
3、 关闭文件:file.closed();
4、 写入内容:file.write(string);
5、 读取文件内容: file.read(<count>)——传入读取字节数,如果没传入,则默认尽可能多的读取,一般是读取到末尾;
6、 重命名文件: os.rename(<当前文件名>, <新文件名>)
7、 删除文件: os.remove(<文件名>)
8、 判断文件是否存在: os.path.exists(self.local_file_path)——存在返回True,否则返回False;
9、 获取文件大小: fsize = os.path.getsize(<文件名>)——单位为B;

 

二、Python文件夹操作

1、创建文件夹:os.mkdir(<新文件夹>);
2、进入(cd)某个文件夹路径: os.chdir(<文件夹>);
3、获取当前所在路径: os.getcwd();
4、删除文件夹: os.rmdir(<文件夹>);

 

三、Python文件上传操作

常用的分为FTP上传和html表单上传文件两种,FTP上传的常用方法如下:
1、FTP.connect(<server_addr>,<port>,[<timeout>]):连接服务器;
2、FTP.login(<username>,<password>):用户登录;
3、FTP.cwd(<path>):设置要操作FTP文件夹路径;
4、FTP.nlst():获得目录下文件;
5、FTP.retrbinary(<filename>,<callback>):下载FTP上的文件,需要有处理回调函数名;
6、FTP.delete(<filename>):删除FTP文件;
7、ftp.storbinary(<filename>,<fileObject>):上传FTP文件;
8、ftp.quit():退出FTP服务器;

 

四、python接收文件操作

对于要接收的html传过来的文件,python一般是基于框架对文件进行接收,当然也可以通过底层实现。常用的框架接收文件的案例有:Flask、Django、bottle等,其中bottle是最轻量级的。
1、Flask实现案例:

# 文件上传
import flask, os, sys,time
from flask import request

interface_path = os.path.dirname(__file__)
sys.path.insert(0, interface_path)  #将当前文件的父目录加入临时系统变量

server = flask.Flask(__name__, static_folder='static')

@server.route('/', methods=['get'])
def index():
    return '<form action="/upload" method="post" enctype="multipart/form-data"><input type="file" id="img" name="img"><button type="submit">上传</button></form>'

@server.route('/upload', methods=['post'])
def upload():
    fname = request.files['img']  #获取上传的文件
    if fname:
        t = time.strftime('%Y%m%d%H%M%S')
        new_fname = r'static/' + t + fname.filename
        fname.save(new_fname)  #保存文件到指定路径
        return '<img src=%s>' %  new_fname
    else:
        return '{"msg": "请上传文件!"}'
print('----------路由和视图函数的对应关系----------')
print(server.url_map) #打印路由和视图函数的对应关系
server.run(port=8000)


2、bottle实现案例:



#!/usr/bin/env python
# -*- coding: utf-8 -*-


import os
from bottle import *


base_path = os.path.dirname(os.path.realpath(__file__))  # 获取脚本路径

upload_path = os.path.join(base_path, 'upload')   # 上传文件目录
if not os.path.exists(upload_path):
    os.makedirs(upload_path)


@route('/', method='GET')
@route('/upload', method='GET')
@route('/index.html', method='GET')
@route('/upload.html', method='GET')
def index():
    """显示上传页"""
    return HTML


@route('/upload', method='POST')
def do_upload():
    """处理上传文件"""
    filedata = request.files.get('fileField')
    
    if filedata.file:
        file_name = os.path.join(upload_path, filedata.filename)
        try:
            filedata.save(file_name)  # 上传文件写入
        except IOError:
            return '上传文件失败'
        return '上传文件成功, 文件名: {}'.format(file_name)
    else:
        return '上传文件失败'

@route('/favicon.ico', method='GET')
def server_static():
    """处理网站图标文件, 找个图标文件放在脚本目录里"""
    return static_file('favicon.ico', root=base_path)


@error(404)
def error404(error):
    """处理错误信息"""
    return '404 发生页面错误, 未找到内容'

run(port=8080, reloader=False)  # reloader设置为True可以在更新代码时自动重载

参考链接:https://bbs.youkuaiyun.com/topics/392190705

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值