Dav*_*542 811 python file file-handling
我查看了Python os
界面,但无法找到移动文件的方法.我如何$ mv ...
在Python中完成相同的操作?
>>> source_files = '/PATH/TO/FOLDER/*'
>>> destination_folder = 'PATH/TO/FOLDER'
>>> # equivalent of $ mv source_files destination_folder
Run Code Online (Sandbox Code Playgroud)
ig0*_*774 1172
两者都使用相同的语法:
import os
import shutil
os.rename("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
os.replace("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
Run Code Online (Sandbox Code Playgroud)
请注意,在这两种情况下,创建新文件的目录必须已存在(但是,在Windows上,具有该名称的文件不得存在,否则将引发异常).另请注意,您必须os.replace()
在源和目标参数中包含文件名().如果更改,则文件将被重命名以及移动.
正如在其他答案的评论中所指出的那样,在大多数情况下file.foo
只需拨打电话os.replace()
.但是,如果目标位于与源不同的磁盘上,则它将复制然后删除源文件.
小智 227
虽然os.rename()
并且shutil.move()
都将重命名文件,但最接近Unix mv命令的命令是shutil.move()
.不同之处在于,os.rename()
如果源和目标位于不同的磁盘上,则shutil.move()
不起作用,而不关心文件所在的磁盘.
jmo*_*oss 32
对于os.rename或shutil.move,您将需要导入该模块.无需*字符即可移动所有文件.
我们在/ opt/awesome中有一个名为source的文件夹,其中一个文件名为awesome.txt.
in /opt/awesome
? ? ls
source
? ? ls source
awesome.txt
python
>>> source = '/opt/awesome/source'
>>> destination = '/opt/awesome/destination'
>>> import os
>>> os.rename(source, destination)
>>> os.listdir('/opt/awesome')
['destination']
Run Code Online (Sandbox Code Playgroud)
我们使用os.listdir来查看文件夹名称实际上已更改.这是shutil将目的地移回源头.
>>> import shutil
>>> shutil.move(destination, source)
>>> os.listdir('/opt/awesome/source')
['awesome.txt']
Run Code Online (Sandbox Code Playgroud)
这次我检查了源文件夹,确保我创建的awesome.txt文件存在.它在那里:)
现在,我们已将文件夹及其文件从源移动到目标,然后再移回.
Moo*_*uit 18
在Python 3.4之后,您还可以使用pathlib
的类Path
移动文件。
Path("path/to/current/file.foo").rename("path/to/new/destination/for/file.foo")
https://docs.python.org/3.4/library/pathlib.html#pathlib.Path.rename
小智 11
这就是我现在正在使用的:
import os, shutil
path = "/volume1/Users/Transfer/"
moveto = "/volume1/Users/Drive_Transfer/"
files = os.listdir(path)
files.sort()
for f in files:
src = path+f
dst = moveto+f
shutil.move(src,dst)
Run Code Online (Sandbox Code Playgroud)
现在功能齐全.希望这对你有所帮助.
Jav*_*ios 10
接受的答案不正确,因为问题不是将文件重命名为文件,而是将许多文件移动到目录中.shutil.move
将完成工作,但为此目的os.rename
是无用的(如评论中所述)因为目的地必须具有明确的文件名.
归档时间: |
|
查看次数: |
872890 次 |
最近记录: |