栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python的一些语法知识点(零碎)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python的一些语法知识点(零碎)

Python的一些语法知识点1(零碎)


前言

包括:
1.各个符号代表的意思
2.使用pycharm遇到的问题以及解决方法


一、各种语法符号 1. “//”:地板除

先做除法再向下取整

d0 = height_frame // 2
2. 打开文件

open()打开一个文件,创建一个 file 对象

fp = open(video_path,'rb')
3. file seek()

seek (offset[, whence]) 用于移动文件读取指针到指定位置。
offset: 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。

fp = open(video_path,'rb')
fp.seek(blk_size * startfrm, 0)
#跳到从文件开头移动blk_size * startfrm个字节的位置
4.file write()

向文件里写入文本

data = fp.read(blk_size)
with open(new_video_path,'ab+') as fp_new:
  fp_new.write(data) #向文件里添加文本
5.os

os 中文就是操作系统的意思,Python 的 os 模块提供了各种操作系统的接口,这些接口主要是用来操作文件和目录。
(1) os.getcwd()
查看当前路径。

import os
print(os.getcwd())

(2) os.listdir(path)
返回指定目录下包含的文件和目录名列表。
path为需要列出的目录路径

import os, sys

# 打开文件
path = "/var/www/html/"
dirs = os.listdir( path )

# 输出所有文件和文件夹
for file in dirs:
   print (file)

(3) os.path.isfile(path)
判断 path 是否为文件。

import os
print(os.path.isfile('E:/tmp.txt'))

(4) os.path.getsize(path)
返回 path 的大小,以字节为单位,若 path 是目录则返回 0。

import os
size = os.path.getsize('E:/tmp.txt')
print(os.path.getsize('E:/work'))
6. ord

语法:ord(c)
返回值是字符c对应的十进制整数。

7.read()

用于从文件读取指定的字节数,如果未给定或为负则读取所有。

data = fp.read(blk_size)
#从当前位置往后,读出blk_size位
8.reshape()

不改变数组元素的前提下,改变数组形状;如将一位数组,改变为2维、3维等

x=np.array([1,2,3,4,5,6,7,8])
y=x.reshape(2,4)
输出:y=([1,2,3,4],[5,6,7,8])
9.append(object)

添加一个元素object到列表尾部,无返回值

10.numpy里的array()

Numpy主要对象是齐次多维数组,由正整数元组索引,Numpy中维度称为轴(axis),数组的维数称为秩(rank)。
array():创建数组

import numpy as np
#一维数组
a=np.array([2,3,4])
b=np.array([2.,3.,4.])
#二维数组
c=np.array([[1.,2.],[3.,4.]])
d=np.array([[1,2],[3,4]],dtype=complex)
原文链接:https://blog.csdn.net/MsSpark/article/details/83050000
11.with 关键字

Python 中的 with 语句用于异常处理,封装了 try…except…finally 编码范式,提高了易用性。简化了文件流等公共资源的管理,处理文件对象时常使用 with 关键字。

with open(video_path,'rb') as fp:
     data = fp.read(blk_size)#读取所有通道的数据,包含亮度和色度

使用 with 关键字系统会自动调用 f.close() 方法,发生执行异常时,文件会被关闭,不会因为执行异常而占用资源。

12.类和实例

类是抽象的模板(描述包含哪些元素), 实例是根据类创建出来的一个个具体的“对象”

class FrameYUV(object):
   pass

(Object)表示该类从哪个类继承下来的,Object类是所有类都会继承的类。
创建实例是通过类名+()实现:

frame_YUV=FrameYUV()

__init__方法强制添加属性;第一参数永远是类的本身实例变量self,并且调用时,不用传递该参数;

class FrameYUV(object):
 	def __init__(self, Y, U, V):
        self._Y = Y  #一个下划线开头的实例变量,外部是可以访问的但约定不能随便访问(需要当成私有变量)
        self.U = U #外部可以访问
        self.__V = V #两个下划线开头的变量,外部不能访问,如需访问再类里定义函数,如下;
    def get_V(self):
        return self.__V

直接调用frame_YUV.get_V()就可以获得变量V的值。

13.try…except

程序发生的异常经 try 捕获并由 except 处理完成

try:
    可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]: #给异常类型起一个别名e
    处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
    处理异常的代码块2
except  [Exception]:
    处理其它异常

[] 括起来的部分可以使用,也可以省略; 一个 except 块可以同时处理多种异常。

14. assert

语法: assert expression

assert(file_bytes % frame_bytes == 0) 
#表达式条件为 false 的时候触发异常。

表达式条件为 false 的时候触发异常。

15.np.ascontiguousarray()

将一个内存不连续存储的数组转换为内存连续存储的数组,使得运行速度更快。
通过数组的**.flags**属性,可以查看一个数组是C连续还是Fortran连续的;
C order 指的是行优先的顺序(Row-major Order),即内存中同行的元素存在一起,Fortran Order则指的是列优先的顺序(Column-major Order),即内存中同列的元素存在一起。
Pascal, C,C++,Python都是行优先存储的,而Fortran,MatLab是列优先存储的。

二、遇到的问题 1.文件夹权限被拒绝

提示:PermissionError: [Errno 13] Permission denied:‘H:/TestSequences/ClassB’
网上搜索了一下答案,windows下这个报错一般不是权限的问题,是文件路径或者文件名写了多余的“n”等符号或者文件找不到、被占用,或者打开的不是文件而是文件夹。
思考1:只提示了classB这个文件夹的权限被拒绝,是不是文件夹命名的问题?
按照这个思路修改了文件名以后classB文件夹不再报错,但其他的文件夹依然报相同的错误,问题并未解决。
思考2:路径里面还有文件夹
代码如下,video_path = walk_file+‘/’+video_file里video_file是文件名而不是文件夹的名字,因此修改new_video_path对应的地方为文件名就可以了

walk_file = 'H:/TestSequences/Class_D'
video_files = os.listdir(walk_file)#读取当前文件夹下的所有文件名列表
for video_file in video_files:#读当前文件夹下所有文件
    video_path = walk_file+'/'+video_file
    #这里的意思是 文件夹/文件名
    height = 240
    width = 416
    frame = 15
    new_video_path = 'H:/TestSequences/Class_D/RaceHorses.yuv'
    #这里的意思是生成一个新的YUV名称为RaceHorses.yuv,存的路径如上;
    write_yuv(video_path,height,width,frame,new_video_path,count)
    #新的序列组成为每个序列(video_files里)取前15帧拼接在一起。
    count=count+1
2.找不到模块名为xxx
import data_info as di
**提示**:No module named 'data_info'

思路:如果是Python的包,则直接在pycharm终端安装对应包,在下图点击终端输入: pip install 包名
报错,因为python对应的版本已经删除了这个模块,这种情况需要查找新版本的Python这个模块的替代进行安装同时需要修改代码;
如果是自定义的模块,将该模块的路径添加到环境变量
一般最后一句是sys.path.append(‘路径’);如果是pycharm:直接选中模块所在文件夹将其“标记为源根”

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号