天天看点

Python3.5对文件的操作

这是一个python3.5对文件操作的整理,里面有复制/改名/覆盖输入/追加输入等等。

前提:在E盘的PythonAAA/A的文件夹下,有一个123.txt

1)覆盖输入

1

2

3

4

5

<code>&gt;&gt;&gt;</code><code>import</code> <code>os    </code><code>#启动模块</code>

<code>&gt;&gt;&gt;f</code><code>=</code><code>open</code><code>(</code><code>"e:/PythonAAA/A/123.txt"</code><code>,</code><code>"w+"</code><code>)    </code><code>#打开目标文件,w+是以读写方式打开,同r+</code>

<code>&gt;&gt;&gt;f.write(</code><code>"我爱北京天安门"</code><code>)    </code><code>#写入内容就是歌词</code>

<code>7</code>

<code>&gt;&gt;&gt;f.close()    </code><code>#关闭文件,这一步至关重要!有开有关。</code>

【补充】如果在改路径下没有123.txt这个文件,那么这样就会直接生成123.txt这个文件。

这种f=open的方式在打开文件之后一定要close(),不然这个文件一直会在后台运行,windows下使用ctrl+alt+del下是可以看到这个进程的,如果总觉得自己会忘记close(),可以使用with as方法,上面的句子可以这么写:

<code>&gt;&gt;&gt;with </code><code>open</code><code>(</code><code>"e:/PythonAAA/A/123.txt"</code><code>) as f:</code>

<code>f.write(</code><code>"我爱北京天安门"</code><code>)</code>

2)追加输入

如果是with as方法打开文件的话, 那么write默认都是追加输入,比如

<code>&gt;&gt;&gt; with </code><code>open</code><code>(</code><code>"e:/PythonAAA/A/123.txt"</code><code>,</code><code>"a"</code><code>) as f:</code>

<code>    </code><code>f.write(</code><code>"\n 伟大领袖毛主席 \t 带领我们向前进"</code><code>)  </code><code>#\n和\s效果自己看</code>

效果如下:

<a href="http://s4.51cto.com/wyfs02/M01/7F/AF/wKiom1corYHztJdSAAAhusfCu0w616.png" target="_blank"></a>

如果要用f=的方法,那么第一行要f=open("e:/PythonAAA/A/123.txt","a") ,这里a就是add的意思。

3)文件改名

如果想要把这个 123.txt改成456.txt,很简单,一句话就能做到。

<code>&gt;&gt;&gt; </code><code>import</code> <code>os</code>

<code>&gt;&gt;&gt; os.rename(</code><code>"e:/PythonAAA/A/123.txt"</code><code>,</code><code>"e:/PythonAAA/A/456.txt"</code><code>)</code>

这个效果立竿见影。

4)文件复制

想要把e:/PythonAAA/A/123.txt复制到e:/PythonAAA/B这个文件夹里,同样叫123.txt。

<code>&gt;&gt;&gt; </code><code>import</code> <code>shutil</code>

<code>&gt;&gt;&gt; shutil.copy(</code><code>"e:/PythonAAA/B/123.txt"</code><code>,</code><code>"e:/PythonAAA/A/123.txt"</code><code>)</code>

【补充】这个语句的前提是必须要有B这个文件夹,不然的话,会报错。

5)目录删除

e:/PythonAAA/B/C这个文件夹不想要了,删除之。

<code>&gt;&gt;&gt; shutil.rmtree(</code><code>"e:/PythonAAA/B/C"</code><code>)</code>

6)文件删除

e:/PythonAAA/B/456.txt这个文件不想要了,删除之。

<code>&gt;&gt;&gt;  os.unlink(</code><code>"e:/PythonAAA/B/456.txt"</code><code>)</code>

os.remove效果也一样,语句也一样。

7)文件剪切粘贴

e:/PythonAAA/B/123.txt剪贴粘贴到e:/PythonAAA/A/123.txt。

<code>&gt;&gt;&gt; shutil.move(</code><code>"e:/PythonAAA/B/123.txt"</code><code>,</code><code>"e:/PythonAAA/A/123.txt"</code><code>)</code>

8)综合练习

要求把e:/PythonAAA/A里所有.py文件都复制到e:/ABC/CBA这个文件夹里。

6

7

8

9

10

11

12

13

14

<code>&gt;&gt;&gt; os.makedirs(</code><code>"e:/ABC/CBA"</code><code>)    </code><code>#建立/ABC/CBA这个文件夹,如果是一层文件夹os.mkdir就行</code>

<code>&gt;&gt;&gt; </code><code>def</code> <code>copyFiles(sourceDir,targetDir):</code>

<code>    </code><code>for</code> <code>files </code><code>in</code> <code>os.listdir(sourceDir):</code>

<code>        </code><code>sourceFile </code><code>=</code> <code>os.path.join(sourceDir,files)</code>

<code>        </code><code>targetFile </code><code>=</code> <code>os.path.join(targetDir,files)</code>

<code>        </code><code>try</code><code>:</code>

<code>            </code><code>if</code> <code>os.path.isfile(sourceFile) </code><code>and</code> <code>sourceFile.find(</code><code>'.py'</code><code>)&gt;</code><code>0</code><code>:</code>

<code>            </code><code>#可以试试不加&gt;0的后果</code>

<code>                </code><code>shutil.move(sourceFile,targetFile)</code>

<code>        </code><code>except</code> <code>FileNotFoundError:</code>

<code>            </code><code>print</code><code>(</code><code>"此文件夹不存在,请重新检查!"</code><code>)</code>

<code>            </code> 

<code>&gt;&gt;&gt; copyFiles(</code><code>"e:/PythonAAA/B"</code><code>,</code><code>"e:/ABC/CBA"</code><code>)</code>

要么无错误输出,要么就会有多少个.py文件就会返回多少次“此文件夹不存在,请重新检查!”

 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1769866