本文目录一览:
- 1、Python3里面os.makedirs
- 2、Python3上传中文文件名的问题
- 3、python request/读写/上传文件
- 4、R、python的文件夹操作
- 5、我按照python从入门到实践下了个python3和文本编辑器Geany按照上面步骤建了个文件夹?
- 6、python3 shutil.copytree复制文件夹下面所有文件跟文件夹
Python3里面os.makedirs
r是raw的意思,带有r前缀的字符串,里面的所有字符都只带有字面意思,而不具有额外的意思。
那为啥加r前缀呢,因为\,这个字符是windows的路径分隔符,但同时也是转义字符。
转义字符是可以去掉字符特殊含义,只保留其字面意思的字符。比如引号"是字符串的起始标记,但要是字符串中有一个引号,那就要用到转义字符,例如"I say: \"Hello!\". \"Hi!\", he replied. "这里面\"是一个字符,表示"的字面含义-python3提交文件夹
同理,".\ a\ b",这里面\a和\b都是单独的字符,你可以用python执行一下,print('\a'),看看是什么效果,反正肯定不是输出a。
那么问题来了,像上面这样,我要在字符串中使用转义字符本身,而不是要用它的转义功能,这时候怎么办?也有办法,通用的办法是把转义字符转义,也就是\\,我要写成
".\\a\\b",如果路径很长,有十几层的话,每个\都要写\\,这样比较麻烦,Python提供了r前缀,只要写一个r,后面所有的\都是字面含义,而不再是转义符。
那么,第一个问题的答案:r".\ a\ b"等价于".\\a\\b"
第二个问题:少了一个. 导致你把目录创建到了根目录下,你可以去当前盘符的根目录去找
Python3上传中文文件名的问题
我们之前在Python2.x的时候,用requests上传文件是正常存储中文名字,但是使用Python3之后,文件名就变得不正常了。因为Java服务端接口不支持这种方式,于是只能修改Python脚本。-python3提交文件夹
因为Python3使用requests的时候,会调用urllib3库—fields.py的新处理逻辑
当文件名是中文的时候, value = email.utils.encode_rfc2231(value, 'utf-8') 就会转换格式为:
filename* 这种格式的键值对。
当然改源码文件是最快的,但是这样不利于移植。
还是修改下requests请求吧。
python request/读写/上传文件
python 读写文件:
data_json = json.dumps(result_r) #json字符串
f =open('E://XXX.txt',"a+") #打开文件,追加+读写
f.write(data_json) # data_json 写入XXX.txt'文件
f.seek(0) # 光标移动到文件开头
lines = f.read()() # 逐行读入
f.close() #关闭文件
mode 打开的方式(r,w,a,x,b,t,r+,w+,a+,U)
r 以只读方式打开文件。文件的指针会放在文件的开头。
w 以写入方式打开文件。文件存在覆盖文件,文件不存在创建一个新文件。
a 以追加方式打开文件。如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。
r+ 打开一个文件用于读写,文件指针会放在文件的开头
w+ 打开一个文件用于读写,文件存在覆盖文件,文件不存在创建一个新文件。
a+ 打开一个文件用于读写,如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。
记忆方法:记住r读,w写,a追加,每个模式后加入+号就变成可读写。
f =open('E://xxx.txt',"a+") / f=open(r'E://xxx.txt',mode='a+',encoding='UTF-8')
踩坑1
没有加encoding='UTF-8',可能会报如下错:
import requests # 使用 request函数需导入 request 库
import json #使用 JSON 函数需要导入 json 库: import json 。
param ={} #请求body
url ='http://域名/api'
header = {'content-type':'application/json'}
r = requests.post(url,json=param,headers=header) #发送post请求
result_r = r.json() #请求返回的json传入对象result_r
data_json = json.dumps(result_r) #将 Python-result_r对象转为字符串 json.dumps()
文件上传请求(csv文件)
file_path = "xxx.csv" 文件路径
uploaddata = {"file":open(file_path, "rb")}
file_upload_result = requests.post(api_URL, files=uploaddata, cookies=cookie)
R、python的文件夹操作
Python OS模块
1.重命名:os.rename(old, new)
2.删除:os.remove(file)
3.列出目录下的 文件 :os.listdir(path)
4.获取当前工作目录:os.getcwd()
5.改变工作目录:os.chdir(newdir)
6.创建多级目录:os.makedirs(r"c:/python /test")
7.创建单个目录:os.mkdir("test")
8.删除多个目录:os.removedirs(r"c:/python") #删除所给路径最后一个目录下所有空目录。
9.删除单个目录:os.rmdir("test")
10.获取文件属性:os.stat(file)
11.修改文件权限与时间戳:os.chmod(file)
12.执行操作系统 命令:os.system("dir")
13.启动新进程:os.exec(), os.execvp()
14.在后台执行程序:osspawnv()
15.终止当前进程:os.exit(), os._exit()
16.分离文件名:os.path.split(r"c:/python/ hello.py ") – ("c://python", " hello.py ")
17.分离扩展名:os.path.splitext(r"c:/python/ hello.py ") – ("c://python//hello", ".py")
18.获取路径名:os.path.dirname(r"c:/python/ hello.py ") – "c://python"
19.获取文件名:os.path.basename(r"r:/python/hello.py") – "hello.py"
20.判断文件是否存在:os.path.exists(r"c:/python/hello.py") – True
21.判断是否是绝对路径:os.path.isabs(r"./python/") – False
22.判断是否是目录:os.path.isdir(r"c:/python") – True
23.判断是否是文件:os.path.isfile(r"c:/python/hello.py") – True
24.判断是否是链接文件:os.path.islink(r"c:/python/hello.py") – False
25.获取文件大小:os.path.getsize(filename)
26.*******:os.ismount("c://") – True
27.搜索目录下的所有文件:os.path.walk()
[2.shutil]
1.复制单个文件:shultil.copy(oldfile, newfle)
2.复制整个目录树:shultil.copytree(r"./setup", r"./backup")
3.删除整个目录树:shultil.rmtree(r"./backup")
[3.tempfile]
1.创建一个唯一的临时文件:tempfile.mktemp() – filename
2.打开临时文件:tempfile.TemporaryFile()
[4.StringIO] #cStringIO是StringIO模块的快速实现模块
1.创建内存 文件并写入初始数据 :f = StringIO.StringIO("Hello world!")
2.读入内存文件数据:print f.read() #或print f.getvalue() – Hello world!
3.想内存文件写入数据:f.write("Good day!")
4.关闭内存文件:f.close()
rm(list=ls())
path = 'J:/lab/EX29 --在R语言中进行文件(夹)操作'
setwd(path)
cat("file A\n", file="A") #创建一个文件A,文件内容是'file A','\n'表示换行,这是一个很好的习惯
cat("file B\n", file="B") #创建一个文件B
file.append("A", "B") #将文件B的内容附到A内容的后面,注意没有空行
file.create("A") #创建一个文件A, 注意会覆盖原来的文件
file.append("A", rep("B", 10)) #将文件B的内容复制10便,并先后附到文件A内容后
file.show("A") #新开工作窗口显示文件A的内容
file.copy("A", "C") #复制文件A保存为C文件,同一个文件夹
dir.create("tmp") #创建名为tmp的文件夹
file.copy(c("A", "B"), "tmp") #将文件夹拷贝到tmp文件夹中
list.files("tmp") #查看文件夹tmp中的文件名
unlink("tmp", recursive=F) #如果文件夹tmp为空,删除文件夹tmp
unlink("tmp", recursive=TRUE) #删除文件夹tmp,如果其中有文件一并删除
file.remove("A", "B", "C") #移除三个文件
我按照python从入门到实践下了个python3和文本编辑器Geany按照上面步骤建了个文件夹?
在cmd里面输入python确定你的windows是否找到python
在geany中新建一个.py的文件,这个时候打开设置生成命令就可以看到python命令
希望能对你有所帮助
python3 shutil.copytree复制文件夹下面所有文件跟文件夹
通常的办法是调用系统的copy或者是cp 方法,当然shutil.copytree方法也可以使用,但是不熟悉的人,经常会碰到各种错误