首页 > 其他分享 >21 os/sys/json/subprocess模块

21 os/sys/json/subprocess模块

时间:2023-08-01 20:15:57浏览次数:40  
标签:username 21 路径 subprocess sys json print os

os模块

使用前老规矩:加上import os

1.创建目录(文件夹)makedirs

os.mkdir(r'aaa')   #在os所在的路径下创建一个aaa文件夹(只能创建一个单级目录)
os.makedir((r'ccc')
os.makedirs(r'bbb/ccc/ddd')  # makedirs支持创建多级目录

2.删除目录(文件夹)removedir

os.rmdir(r'aaa')  #可以删除{单级}{空的}目录
os.removedir(r'/Users/jiboyuan/PycharmProjects/day21/bbb/ccc/ddd')#可以删除多级,删除目标目录后如果外层的目录也是空的会自动删除,
并且这里必须写具体路径在括号内(也可以删除单个os.removedirs(r'ccc') )

3.查看某个路径下所有文件名称(文件/文件夹)listdir

print(os.listdir())#不填则默认现在文件的路径
print(os.listdir(r'/Users'))  #也可以自定义查找非现在文件的路径

4.删除/重命名文件 remove   rename

os.remove(r'a.txt')  #删除文件
os.rename(r'a.txt', r'aaa.txt')  #(现在的文件名,修改后的名字)

5.获取当前路径/切换路径   getcwd   chdir

print(os.getcwd())  #获取当前路径
os.chdir(r'/Users/jiboyuan')  #ch(更改)dir(目录)
print(os.getcwd())  #再打印就是更改后的目录

6.软件开发目录规范  兼容性操作(不同人电脑也可以使用)dirname   abspath

os.path.dirname(_ _ file _ _)  #动态获取(每个人的电脑上面都会有改变)当前文件的绝对路径    eg   D:\day21

os.path.dirname(os.panth.dirname(_ _ file _ _))  #嵌套一层就是往上切换一层   D:\

print(os.path.abspath(__file__))  #动态获取当前执行文件自身路径,和上面相似,但是会比较具体些    D:\day21\a.py

7.判断文件是否存在 exist(存在)    isdir(是文件夹)     isfile(是文件)

print(os.path.exists(r'ATM'))  # True  判断所给的路径是否存在(文件降夹)
print(os.path.exists(r'01 作业讲解.py'))  # True  判断所给的路径是否存在(文件)

'''exists可以用在文件也可以用于文件夹,返回布尔值'''



#判断路是否是文件夹  isdir
print(os.path.isdir(r'ATM'))  # True  判断路径是否是一个文件夹
print(os.path.isdir(r'01 作业讲解.py'))  # False  判断路径是否是一个文件夹



#判断路是否是文件  isfile
print(os.path.isfile(r'ATM'))  # False  判断路径是否是一个文件
print(os.path.isfile(r'01 作业讲解.py'))  # True  判断路径是否是一个文件

 8.拼接路径  join

base_dir = 'ATM'
exe_dir = '01 作业讲解.py'
'''拼接成py文件的路径'''
#方法一
print(base_dir + '/' + exe_dir)   #但是可惜在不同电脑上分隔符号有的是/有的是\,使用加号兼容性不高!!

#方法二
res = os.path.join(base_dir, exe_dir)  # 能够自动识别当前操作系统的分隔符

9.获取文件大小(字节 bytes为单位)getsize

print(os.path.getsize(r'ATM'))  # 128(这里的128表示128bytes,每个英文字母表示1bytes,每个中文表示2bytes)

sys模块

"""该模块主要是跟python解释器打交道"""
import sys
# 1.列举当前执行文件所在的路径(掌握)
print(sys.path)
# 2.获取解释器版本信息(了解)
print(sys.version)
# 3.获取平台信息(了解)
print(sys.platform)
# 4.自定义命令行操作(了解,用的不多暂时)
print(sys.argv)
"""
cmd终端可以使用windows+r并输入cmd唤起
也可以在pycharm直接使用快捷方式Terminal(在pycharm下面框子的左边)
    模拟cmd并自动切换到当前执行文件所在的路径下
"""
# if len(sys.argv) == 3:  # 这里的判断也可以变成异常捕获的形式
#     username = sys.argv[1]
#     password = sys.argv[2]
#     if username == 'jason' and password == '123':
#         print('可以正常执行该文件')
#     else:
#         print('用户名或密码错误 没有该文件的执行权限')
# else:
#     print('请输入用户名和密码 不能漏写或多写')


try:  (或者用异常捕获的形式)
    username = sys.argv[1]
    password = sys.argv[2]
except Exception:
    print('请输入用户名和密码')
else:
    if username == 'jason' and password == '123':
        print('可以正常执行该文件')
    else:
        print('用户名或密码错误 没有该文件的执行权限')

 

json模块(重要)

'''json是一个序列化模块 主要用于跨语言传输数据'''
#我们都知道传输现在都是用网络传输,而网络传输必然是2进制传输,也就是bytes类型传输,而二进制传输必须是字符串,
由此可以知道json格式数据就是属于字符串类型! import json d = {'username':'jason','pwd':123} print(d, type(d)) # {'username': 'jason', 'pwd': 123} <class 'dict'> res = json.dumps(d) print(res, type(res)) # {"username": "jason", "pwd": 123} <class 'str'>'''双引号是json格式数据独有的标志符号''' print(str(d),type(str(d))) # {'username': 'jason', 'pwd': 123} <class 'str'>
'''补充!!!'''
d = {"username":"jason","pwd":123}
print(d)  # {'username': 'jason', 'pwd': 123}  不是
res1 = '{"username":"jason","pwd":123}'  #外面再加上双引号
print(res1)  # {"username":"jason","pwd":123}  算json格式

具体操作

 d = {'username':'jason','pwd':123}
res = json.dumps(d)   #将字典转成字符串
encode_str = res.encode('utf8')  #将字符串转成二进制便于网络进行传输


json_str = encode_str.decode('utf8')  #收到后进行解码(注意这个解码后依然是字符串)
res1 = json.loads(json_str)   #将字符串再转换成字典

"""
json.dumps()        序列化
    将python数据类型转换成json格式字符串
json.loads()        反序列化
    将json格式字符串转换成对应的数据类型
"""
 #强调:不是所有的数据类型都支持序列化
支持序列化的有:
字典/列表/元组/字符串/整型/浮点型/布尔值中的True和False/None(不包括集合)

pickle模块

# 基本不用
    因为它不支持跨语言传输 只能识别python代码
'''直接忽略 不用掌握'''

subprocess模块

import subprocess
# ls在终端的意思就是查看当前路径下所有的文件名称


res = subprocess.Popen('ls',
                       shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE
                       )   #了解即可,固定写法,不用知道为什么!
print('stdout',res.stdout.read().decode('utf8'))  # 获取正确命令执行之后的结果
print('stderr',res.stderr.read().decode('utf8'))  # 获取错误命令执行之后的结果
"""
该模块可以实现远程操作其他计算机的功能
    动态获取命令执行并返回结果
        eg:类似于Xshell软件的功能
"""

 

标签:username,21,路径,subprocess,sys,json,print,os
From: https://www.cnblogs.com/Milk1/p/17596937.html

相关文章

  • LOJ3677 「北大集训 2021」出题高手
    卡死人了。数据随机写在上面,就是让你预估一下区间长度不会太长的,数据里最长的不超过\(2000\)。暴力扫\(2000\)个显然过不了\(500000\)的点,但是\(500000\)的点\(m\)为\(1\)且必定询问整个序列。可以分析出,在随机情况下,前缀和最小最大数量是根号个的,平方后是四次根号级......
  • 通过伪装PPID提权到SYSTEM
    通过伪装PPID提权到SYSTEMPPID-Priv  简介在指定父进程句柄的时候,子进程同时也会继承父进程的权限,这样的话我们也可以通过伪装PPID的方式进行提权,但是这样的技术会有一个较大的缺陷,如果使用processexplorer等进程监控软件查看的话会显示在系统权限的进程下派生出了一个子进程,这......
  • Could not find server 'server name' in sys.servers. SQL Server 2014
    Couldnotfindserver'servername'insys.servers.SQLServer2014  Atfirstcheckoutthatyourlinkedserverisinthelistbythisqueryselectnamefromsys.serversIfitnotexiststhentrytoaddtothelinkedserverEXECsp_addl......
  • 论文翻译:SSI-Net: A MULTI-STAGE SPEECH SIGNAL IMPROVEMENT SYSTEM FOR ICASSP 2023
    摘要ICASSP2023语音信号改善(SSI)挑战赛的重点是提高实时通信(RTC)系统的语音信号质量。本文介绍了提交ICASSP2023SSI挑战赛的语音信号改进网络(SSI-Net),该网络满足实时条件。提出的SSI-Net具有多阶段体系结构。在语音恢复的第一阶段,我们提出了时域恢复生成对抗网络(TRGA......
  • Windows Server 2008 R2 OVF, updated Jul 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2008R2OVF,updatedJul2023(sysin)-VMware虚拟机模板WindowsServer2008R2简体中文版OVF,2023年7月更新请访问原文链接:https://sysin.org/blog/windows-server-2008-r2-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindowsSe......
  • Windows Server 2016 OVF, updated Jul 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2016OVF,updatedJul2023(sysin)-VMware虚拟机模板2023年6月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2016-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • Windows Server 2019 OVF, updated Jul 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2019OVF,updatedJul2023(sysin)-VMware虚拟机模板2023年7月版本更新,现在自动运行sysprep,支持ESXiHostClient部署更新日期:FriJul28202317:12:00GMT+0800,阅读量:6244请访问原文链接:https://sysin.org/blog/windows-server-2019-ovf/,查看最......
  • Windows Server 2022 OVF, updated Jul 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2022OVF,updatedJul2023(sysin)-VMware虚拟机模板2023年7月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2022-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • P2216 理想的正方形 题解
    P2216理想的正方形(为什么要写这篇题解?因为我β搞的心态炸了)食用此题解所需:有基础的双端队列知识与一只可爱的\(C++\)传送门:起飞!1.思考嗯,一看数据范围,\(a,b\leq1,000\),就知道这道题一定是一道\(\operatorname{O}(ab)\)的题(因为输入就已经达到\(100,000\)级别了,就算......
  • Android systemupdater
    1.systemupdater 位于packages\apps\Car\SystemUpdater\下,入口Activity为packages\apps\Car\SystemUpdater\src\com\android\car\systemupdater\SystemUpdaterActivity.java在onActivityCreated方法中执行升级包校验功能@OverridepublicvoidonActivityCreated(Bund......