python 学习遇到棘手问题那位高手指点下哪里出问题了?
import os
import shutil
def walkFile(file):
for root,dir,files in os.walk(file):
# root 表示当前正在访问的文件夹路径
# files 表示该文件夹下的文件list
# dir 表示目前的文件夹
# 遍历文件
for f in files:
print(f[0:-4]) # 从遍历的文件去掉后缀名(.doc),如果后缀名是(.docx)那么切片更改为[0:-5].
word = "C:/Users/dvs909/Desktop/列表.txt" # 设置读取文本的路径
with open (word) as obje:
f_words = obje.readlines() # 读取文本内容作为列表储存
for f_word in f_words: # 遍历列表内容
print(f_word.strip()) # 打印列表内容并去除空格
while f[0:-4] == f_word.strip(): # 判断列表名是否等于文件名
file_dir = "C:/Users/dvs909/Desktop/文件夹2" # 设置粘贴的文件路径
shutil.copyfile(f,file_dir) # 将文件粘贴到文件夹2路径
walkFile(“C:/Users/dvs909/Desktop/文件1”)
关于 LearnKu
大概的问题有:
我重写了一下, 没有试过, 你试试...
首先非常感谢的指点,但是运行还是出现以下错误,我用的是vscode Traceback (most recent call last): File "c:\Users\dvs909.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\ptvsd_launcher.py", line 48, in main(ptvsdArgs) File "c:\Users\dvs909.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\lib\python\old_ptvsd\ptvsd_main_.py", line 432, in main run() File "c:\Users\dvs909.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\lib\python\old_ptvsd\ptvsd_main_.py", line 316, in run_file
runpy.run_path(target, run_name='main') File "D:\python\lib\runpy.py", line 263, in run_path return _run_module_code(code, init_globals, run_name, File "D:\python\lib\runpy.py", line 96, in _run_module_code _run_code(code, mod_globals, init_globals, File "D:\python\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "d:\py\demo.py", line 29, in walkFile(dir) File "d:\py\demo.py", line 18, in walkFile shutil.copyfile(f, file_dir) File "D:\python\lib\shutil.py", line 259, in copyfile with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst: FileNotFoundError: [Errno 2] No such file or directory: '234.doc'
是我忘了把路径加上去, 所以找不到档案
改为
出现 [Errno 13] Permission denied: 'C:/Users/dvs909/Desktop/文件夹2' 似乎是权限被拒绝还是找不到文件,楞是没有找到问题,
要清楚描问题, 并说明情况, 还要提供你知道的资讯. 比如:
通常, 我只能说通常, 有些目录或档案是你动不了的, 极可能是系统目录或档案. 只能避过不动.
谢谢,我想完成的是通过txt文本里面的字符提取一个文件夹里面相对应的相同名称的文件,复制到另一个文件夹,这样的功能,然后最后最后生成一个excel表格显示多少提取成功,多少提取失败,有bat可以实现,但是python经常报错,我想应该是python处理此类工作更胜一筹。下面是代码bat代码。
@echo off
set “原文件夹=F:\文件1”
set “新文件夹=E:\新建文件夹”
set “结果1=找到.csv”
set “结果2=未找到.csv”
cd /d “%
dp0”xb” neq “” (del /a /f /q “%结果1%” “%结果2%”
md “%新文件夹%” 2>nul
for /f “delims=” %%a in (‘type “列表.txt”‘) do (
set /a “a+=1,b=0”
set “f=”
for /f “delims=” %%b in (‘dir /a-d/b/s “%原文件夹%%%a.*”‘) do (
if “%%
set /a b+=1
echo;”%%b” –^> “%新文件夹%"
xcopy “%%b” “%新文件夹%"
>>”%结果1%” echo;”%%b”
set f=1
)
)
if defined f (set /a c+=1) else (>>”%结果2%” echo;”””%%a”&set /a d+=1)
)
echo;总%a%,找到%c%,未找到%d%
pause
通过列表txt本文内容查找原文件夹里面的内容,然后复制到新文件夹,生成成功多少和失败多少。
代码里面会有一些是markdown的保留字符, 会消失看不见的, 你最好用
```
代码
```
来PO文, 不然连你这bat档内容都不对了.
能用文字描述吗? 文字说明更直接吧.
1.首先有代码所在路径有一个txt文本 2.打开txt文本内容 3.文本里面内容假如第一行有65123654内容 4.对照所在路径文件夹1里面是否有65123654.doc的word文件 5.假如有65123654.doc的文件则复制到所在路径文件夹2里面 6.生成csv格式报告,txt文本内容多少条内容找到多少条内容未找到,哪些内容没有找到。 这个就是上面的批处理脚本实现的功能,但是python脚本应该也可以实现,但是一直报错我在一直修改代码和百度,就是实现不了,原因是我python技术太菜。
For your reference
非常感谢你的不断指点,可能是我的原因这边运行还是报错,我先研究懂你的思路和代码,在回来提问吧,我相信python是一门精彩的语言。
import os
import shutil
path = 'C:/Users/Administrator/Desktop/列表.txt'
root = 'C:/Users/Administrator/Desktop/文件夹1'
root1 = 'C:/Users/Administrator/Desktop/文件夹2'
with open (path) as obj:
words = obj.readlines() for word in words:
for dirpath,dirnames,filenames in os.walk(root):
for filename in filenames:
if word.strip() == filename[0:-5]:
shutil.copy(root + "/" + filename,root1)
count = 0
for dirpath,dirnames,filepath in os.walk(root1): for f in filepath:
count += 1
print("复制成功数据: " + str(count) + "条")
os.system("pause") 通过重写以上代码已经实现了对照列表复制功能,我正在研究你入户如何生成csv报告,函数太多我脑袋有点乱呵呵,很感谢你的指点迷津
很抱歉作为 版主没有及时回答你的问题,最近和朋友在开发推荐系统,学习算法。有时候进来社区看看文,改进改进几位小伙伴的文章格式、看看小伙伴们的文章,这两天有点忙,没有回复你 实在抱歉。加油!很多坑(哪怕再简单的问题)都是慢慢磨过了才懂,加油哦,万事开头难。👍👍👍👍