鱼C论坛

 找回密码
 立即注册
查看: 5248|回复: 13

[已解决]请问python的前辈们是否有代码能做到这个功能?

[复制链接]
发表于 2016-8-19 21:30:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 fdfanmo 于 2016-8-21 09:51 编辑

今天加入了VIP很快的在10分钟下载完所有的python交学视频
但是目前有个问题..
将挡案解压缩后的目录路径格式为.
D:\【視頻教學】零基礎入門學習Python\046魔法方法:描述符(Property的原理)\046魔法方法:描述符(Property的原理)\046魔法方法:描述符(Property的原理).mp4

这样我每次要观看影片都必须多点一层目录
我想让影片挡案"后缀名.MP4"全部都往上一层目录移动
变成

D:\【視頻教學】零基礎入門學習Python\046魔法方法:描述符(Property的原理)\046魔法方法:描述符(Property的原理).mp4

这样..

而且是用代码将"零基礎入門學習Python"下的97个文件夹都作一漾的处理.
将所有影片挡案都各自往自己的上一层文件夹移动.

我知道DOS的批次命令(后缀名.BAT)可以做到这个功能
不知道python有没有办法做到这个功能?
如果有大大可以贴出代码.
恳求如果可以的话.将代码中函数等功能稍作解释.
以让小弟可以顺便学习到您的代码精隨.万分感谢!!
最佳答案
2016-8-20 09:50:41
fdfanmo 发表于 2016-8-20 09:28
先谢谢SixPy 大大的解答..
我就是用这种方式解压缩的..
小弟会提出这个问题,主要原因不再于要解决这 ...


os.walk
  1. import os
  2. for root, dirs, files in os.walk(mp4_path):
  3.     pass
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-8-19 23:59:21 | 显示全部楼层
你把整个目录都拖进播放器,它会自动找视频文件的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-20 07:28:52 | 显示全部楼层
SixPy 发表于 2016-8-19 23:59
你把整个目录都拖进播放器,它会自动找视频文件的

SixPy 大大这个我知道的..
只是我也想将整个目录都整理起来..
存放到自己的云端空间上..
用海美迪播放器播放也可以比较方便的..
其实已我目前所学到的语言来说..
我写一个按键精灵的脚本也可以达成这个功能的..
只不过那是利用脚本来控制电脑操作滑鼠去来自动重复操作完成这个功能..
我也想知道是否利用python的代码可以完成这个需要的功能?
我映像中dos的批次档好像是可以完成这个功能的..
只是dos的批次档我也不会写..
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-20 08:45:37 | 显示全部楼层
右键点rar压缩包,选 “解压到当前目录”
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-20 09:28:48 | 显示全部楼层
本帖最后由 fdfanmo 于 2016-8-20 09:32 编辑
SixPy 发表于 2016-8-20 08:45
右键点rar压缩包,选 “解压到当前目录”


先谢谢SixPy 大大的解答..
我就是用这种方式解压缩的..
小弟会提出这个问题,主要原因不再于要解决这个问题(因为我也可写按键脚本来解决)

小弟主要是想请教各位前辈,如果用python写代码是否做得到这个功能?
这功能对语言来说应该是不难做到的..
因为他有一定的目录结构规则..(所以按键精灵脚本才可以实现这个功能)

我觉得DOS指令的BAT檔应该也是做得到的..
1.先取目录结构(含子目录挡案名) 2. 再用move命令将.MP4挡案移动到上一层目录中..
3.写一个循环来重复移动其他目录中的mp4挡案到上一层目录中..

但小弟目前正在学python
想提出这个疑问..
python语言可以做到这样的需求吗?
还是只有C语言或是DOS才可以呢?


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-20 09:50:41 | 显示全部楼层    本楼为最佳答案   
fdfanmo 发表于 2016-8-20 09:28
先谢谢SixPy 大大的解答..
我就是用这种方式解压缩的..
小弟会提出这个问题,主要原因不再于要解决这 ...


os.walk
  1. import os
  2. for root, dirs, files in os.walk(mp4_path):
  3.     pass
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-20 10:20:41 | 显示全部楼层

谢谢版主的代码..
看到有点惊讶了..
短短几行代码就能实现将97个目录下的mp4挡案都往上移动一层..
小弟将代码存成.PY放在主目录下.
但是执行后却出现错误信息..
小弟不知道是什么地方做错了?

snap038.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-20 10:49:04 | 显示全部楼层
fdfanmo 发表于 2016-8-20 10:20
谢谢版主的代码..
看到有点惊讶了..
短短几行代码就能实现将97个目录下的mp4挡案都往上移动一层..


你~~~~
呃~~~~~~~~~~~~~
你还是认真看视频吧,好好学习,天天向上~

评分

参与人数 1鱼币 +2 收起 理由
fdfanmo + 2 感谢版主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-20 11:59:57 | 显示全部楼层
SixPy 发表于 2016-8-20 10:49
你~~~~
呃~~~~~~~~~~~~~
你还是认真看视频吧,好好学习,天天向上~

呵呵~就是因为没基础才学零基础的嘛..
也请版主不要见笑..
我懂了这根本不是代码..
而是逻辑..
也谢谢版主的指教..
我会继续努力的..
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-20 15:56:59 | 显示全部楼层
本帖最后由 fdfanmo 于 2016-8-20 16:04 编辑

有台湾的朋有提供了DOS 批次挡的写法..
让我见试到程式语言处理这类需求的速度比按键精灵快上100倍以上了..
短短3秒钟就改完97个文件夹了..
很可惜目前没有见试到python的写法..
不过我想sixPy版主的回答也就代表python也是有办法写出这个功能代码的..
还是认真看视频,好好学习,天天向上吧~

提供以下代码也给有此需求的朋有使用..

  1. 條件1: 父.子的資料夾名稱相同
  2. 修件2: 把子目錄的檔案全部往上層父目錄塞
  3. 如果依照您的需求如上2條件的話

  4. 1.請把底下指令存成 .bat
  5. 2.需存放在 "X:\201205"
  6. 3.請自建測試目錄try it!, 測試無誤再上
  7. 4.XP測試正常

  8. rem ==========程式開始
  9. rem 定義啟始目錄
  10. set HOME=%cd%
  11. rem 搬檔
  12. FOR /F %%i IN ('dir/ad/b') DO move "%HOME%\%%i\%%i\*.*" "%HOME%\%%i\."
  13. rem 砍掉 aaaa 下面的 aaaa 資料夾
  14. FOR /F %%i IN ('dir/ad/b') DO rd "%HOME%\%%i\%%i"
  15. rem ==========程式結束
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-20 21:09:58 | 显示全部楼层
我把 @SixPy 6楼的程序完成了,你看一下,加上了注释,如果有问题再问。

  1. import os, os.path, shutil
  2. for root, dirs, files in  os.walk('d:\\【视频教学】零基础入门学习Python'):
  3. #os.walk回遍历整个目录,包括子目录,并返回元组,我们用到的是root和files,root是完整的目录,files是该目录下所有文件的列表
  4.     for f in files:
  5.         if os.path.splitext(f)[1] == '.mp4':
  6. #对files列表中每个文件判断,如果扩展名是.mp4
  7.             shutil.copy(root + '\\' + files[0] , 'd:\\1\\' + f)   
  8. #将文件拷贝到目标目录d:\1\,这里要注意的是,这个目录必须存在,否则会出错。可以用os.makedir先建立。
  9. #如果是移动文件,将shutil.copy改为 shutil.move   
复制代码


评分

参与人数 2鱼币 +10 收起 理由
fdfanmo + 5 感谢版主无私奉献!
SixPy + 5 path.join ^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-21 09:50:51 | 显示全部楼层
冬雪雪冬 发表于 2016-8-20 21:09
我把 @SixPy 6楼的程序完成了,你看一下,加上了注释,如果有问题再问。

谢谢冬雪版主的代码.
让我见试到不是C语言或DOS才能做到..
python一样可以..
目前视频看到了第"020函数:内嵌函数和闭包"
作业只做到第6课.
因为我想先看视频打个底.然后写作业前在看一遍.
看完在写作业.加深映像.
学编程唯一的困难就是英文不行..
很多单字根本没看过或是不认试..
对我来说记这些单字会比较吃力..
再来就是强化逻辑能力了..
好在有各位版主的帮忙..
不然肯定要花更多冤枉路了..

代码大致上都能理解..
只是很多部份视频都还没看到介绍...(import os, os.path, shutil)
应该后面的教程会介绍到吧..
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-21 21:07:55 | 显示全部楼层
fdfanmo 发表于 2016-8-21 09:50
谢谢冬雪版主的代码.
让我见试到不是C语言或DOS才能做到..
python一样可以..

python语言之所以强大,除了本身的特性外,还因为其自带和第三方的模块,把其功能大为扩展。
import导入的模块,有些后续的课程会有介绍,有些需要自我查看资料学习。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-22 12:27:51 | 显示全部楼层
本帖最后由 fdfanmo 于 2016-8-22 12:29 编辑
冬雪雪冬 发表于 2016-8-21 21:07
python语言之所以强大,除了本身的特性外,还因为其自带和第三方的模块,把其功能大为扩展。
import导入 ...


英文很差的我來說..
要自己学会交学视频外的东西几乎不可能..(比如说:有些需要自我查看资料学习。)
只要能够学习到小甲鱼老师视频课程内的我就非常开心了..
也好在有你门版主门肯无私的奉献与解答相关在你门看起来简单到不行的提问)
不然光靠视频也是学不会的..
其实激起我学python的主要目地是为了学会写网路爬虫..
来一次性的下载我需要的影片或是图片..
还有先类似于百度云.115.优酷.土豆网.这种处理过源地址的文件..(当然这技术门槛应该就更高了)
希望论坛或是小甲鱼老师可以多出一些这方面的交学视频..
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-22 07:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表