标题: [文本处理] 如何判断txt文本中列出的路径是文件的还是文件夹的? [打印本页]
作者: freesoft00 时间: 2016-4-7 13:39 标题: 如何判断txt文本中列出的路径是文件的还是文件夹的?
本帖最后由 pcl_test 于 2016-4-7 19:47 编辑
一个文本,比如test.txt,内容如下:
需要用for判断哪些是文件哪些是目录,文件输出到11.txt中,文件夹输出到22.txt中,应该如何写?
C:\Windows\addins
C:\Windows\Application Compatibility Scripts
C:\Windows\CSC\v2.0.6\temp
C:\Windows\CSC\v2.0.6\temp\ea-{d9dd67e4-f096-11e4-96f1-e9210b24e1b2}
C:\Windows\debug\PASSWD.LOG
C:\Windows\Downloaded Program Files
C:\Windows\ehome
C:\Windows\explorer.exe
C:\Windows\Fonts\ahronbd.ttf
C:\Windows\Globalization\Sorting\SortDefault.nls
C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelInstallRC.dll
C:\Windows\provisioning
C:\Windows\rescache\rc0003\ResCache.dir
C:\Windows\Resources
C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TM.blf
C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000001.regtrans-ms
C:\Windows\SysMsiCache
C:\Windows\System32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0
作者: CrLf 时间: 2016-4-7 14:12
- @echo off
- for /f "tokens=*" %%a in (test.txt) do (
- if exist %%a\nul (echo %%a>>11.txt) else echo %%a>>22.txt
- )
复制代码
作者: codegay 时间: 2016-4-7 14:26
julia内置函数,isfile isdir
python麻烦点
import os
os.path.isfile
os.path.isdir
都很直观。
作者: freesoft00 时间: 2016-4-7 19:55
回复 2# CrLf
感谢!
22.txt不正确,文件和目录都有,而11.txt正确只有目录
例如22.txt的内容如下:- C:\Windows\ADAM
- C:\Windows\Application Compatibility Scripts
- C:\Windows\bootstat.dat
- C:\Windows\Branding\Basebrd\basebrd.dll
- C:\Windows\Cluster
- C:\Windows\CSC\v2.0.6\namespace
- C:\Windows\CSC\v2.0.6\pq
- C:\Windows\CSC\v2.0.6\sm
- C:\Windows\CSC\v2.0.6\temp
- C:\Windows\CSC\v2.0.6\temp\ea-{d9dd67e4-f096-11e4-96f1-e9210b24e1b2}
- C:\Windows\debug\PASSWD.LOG
- C:\Windows\ehome
- C:\Windows\explorer.exe
- C:\Windows\idmu
- C:\Windows\MSAgent
- C:\Windows\nap
复制代码
作者: happy886rr 时间: 2016-4-7 20:05
- @echo off&for /f "delims=" %%a in (test.txt) do (CD "%%a\"&&echo %%a>>22.txt||echo %%a>>11.txt)
复制代码
回复 4# freesoft00
作者: CrLf 时间: 2016-4-7 20:55
回复 5# happy886rr
没权限也会 cd 失败
作者: happy886rr 时间: 2016-4-7 21:13
回复 6# CrLf
只要不是系统目录就好说,听说Win10新版原生支持Linux Bash命令行。
作者: CrLf 时间: 2016-4-7 21:28
本帖最后由 CrLf 于 2016-4-8 01:57 编辑
逼我放大招- @mshta http://bathome.net/s/hta/?string type(""J:\SkyIAR_v2.72\ff.txt"").split(/\r\n/).files() >11.txt
-
- @mshta http://bathome.net/s/hta/?string type(""J:\SkyIAR_v2.72\ff.txt"").split(/\r\n/).folders() >22.txt
复制代码
作者: freesoft00 时间: 2016-4-7 22:09
本帖最后由 freesoft00 于 2016-4-7 22:14 编辑
回复 5# happy886rr
谢谢!不过和上面的执行结果差不多,也是文件txt中包括目录。
处理的就是系统目录的内容:
只要不是系统目录就好说,听说Win10新版原生支持Linux Bash命令行
。
作者: freesoft00 时间: 2016-4-7 22:13
回复 8# CrLf
也不行呀,test.txt我修改为了我的实际路径的文件。- @mshta http://bathome.net/s/hta/ type('J:\SkyIAR_v2.72\ff.txt').split(/\r\n/).files() >J:\SkyIAR_v2.72\11.txt
- @mshta http://bathome.net/s/hta/ type('J:\SkyIAR_v2.72\ff.txt').split(/\r\n/).folders() >J:\SkyIAR_v2.72\22.txt
复制代码
执行胡得到的是两个空文件,没有内容。
而且大招必须要联网才可以,可否有离线就可以处理的?
谢谢!
作者: CrLf 时间: 2016-4-8 00:28
回复 10# freesoft00
\ 改 \\
作者: freesoft00 时间: 2016-4-8 00:46
回复 11# CrLf
可以了。但是还是有点问题。- C:\Windows\AppPatch\drvmain.sdb,C:\Windows\AppPatch\sysmain.sdb,C:\Windows\bootstat.dat,C:\Windows\Branding\Basebrd\basebrd.dll,
复制代码
内容变成以逗号分隔的一行文本了。
作者: CrLf 时间: 2016-4-8 01:57
回复 12# freesoft00
已修改
作者: codegay 时间: 2016-4-8 04:00
- """
- python判断路径是目录还是文件.py
- http://bbs.bathome.net/thread-39957-1-1.html
- 2016年4月8日 03:04:00 codegay
- """
-
-
- import os
-
- files=[r for r in open("test.txt") if os.path.isfile(r.strip())]
- dirs=[r for r in open("test.txt") if os.path.isdir(r.strip())]
-
- with open("11.txt","w+") as f:
- f.writelines(files)
-
- with open("22.txt","w+") as f:
- f.writelines(dirs)
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |