如何创建从 .txt 或特定文件夹中的任何文本文档中搜索值的程序
How to Create a Program Which Searches for Values from a .txt or any Text Document in Specific Folders
我对编程比较陌生,想创建一个程序来解决我经常遇到的问题。
这是我的短篇小说的背景: 我在一个托管许多文件的网站上(我们谈论的是大约 500-1000 个小文件)。我当时想,“哦,天哪!我想把所有这些东西都放在我的硬盘里,这样我就知道我可以访问它们……但我可能不会以任何方式使用它们”。我继续下载该站点上的所有 500-1000 个文件,但在查看目标文件的属性时遇到了问题。假设网站上的 500 个文件中,我的计算机只有 499 个文件。只是我的运气。我想知道从我身边溜走的那个讨厌的文件是什么,并专门下载了那个文件。我不想做的是删除所有文件,然后再次尝试从网站下载所有文件。在网站上,没有任何迹象表明我下载了哪些文件,所以我完全不知所措。我可以按 Ctrl+C 输入每个项目,然后按 Ctrl+V 进入文件管理器搜索栏,但重复 500 次会很乏味。
现在,我想做的是:我想继续从网站上获取所有文件名(我下载的文件名和下载的文件名在我的驱动器中是相同的),将它们全部放在一个简单的 .txt 文档或其他东西中(该网站在我需要的文本旁边有多个不需要的文本,例如:
。如果无法像这样从站点中提取文本,那么我可以通过复制粘贴手动输入名称)。然后我希望计算机在文档中获取这些值,然后在特定的文件夹路径中搜索它(注意:实际文件在我要选择的根文件夹内的子文件夹中,因此程序必须能够在其中搜索根的多个文件夹)。然后我想让计算机知道文档中的值是否作为文件存在。如果该文件不存在,那么我希望文档中的 value/those 值显示为输出。我希望这个循环重复,直到所有的值都被通过。输出应列出不存在的值。
结论:你现在可能明白我想做什么,如果你不明白,请告诉我我需要详细说明的内容。我真的不在乎这个程序是如何制作的(什么语言或软件),我只想要一些有用的东西......但我自己不知道如何创建。
感谢阅读,如有任何回复我们将不胜感激!
Dhanwanth P :)
不用担心;我自己用 Excel 找到了一个解决方案(上帝,它很强大!)。
基本上,我从网站上复制并粘贴了我的值,然后使用过滤器仅显示 .wav
的值。然后我使用文件夹中的 Power Query 获取文件夹中所有文件名的列表。最后,我继续使用公式比较两者:
=IF(COUNTIF(B:B,D,"OK","MISSING")
如果您需要更多说明,我很乐意提供帮助,只需回复即可。可能有更简单的方法,但我个人喜欢这个 straight-forwardness。你只需要微软 excel!
编辑:
对我来说,我使用了这两个视频来介绍 power query 和 countif 函数:
如何获取 Excel 文件夹中的文件名列表(没有 VBA):https://www.youtube.com/watch?v=OSCPVBWOqwc
如何比较两个 Excel 工作表(并找出差异):https://www.youtube.com/watch?v=8Ou_wfzcKKk
就我而言,我 sheet 看起来像这样:
Python 中有一个解决方案,如果您想探索...
与您描述的类似,网站上的所有文件都列在 Excel 文件中 'website_files.xlsx'
并且所有文件都保存在文件夹 'downloaded_wav' 中。无论文件保存在根目录还是 sub-folders.
中,该脚本都将起作用
然后我 运行 在 Python 脚本下面寻找丢失的文件:
import pandas as pd
import os
path_folder = 'C:\Users\Admin\Downloads\downloaded_wav'
downloaded_files = []
d,m = 0,0
for path_name, subfolders, files in os.walk(path_folder): #include all subfolders
for file in files:
d+=1
downloaded_files.append(file)
df = pd.read_excel('website_files.xlsx')
for file in df.values:
if file not in downloaded_files:
print('MISSING', file)
m+=1
print(len(df), 'files on website')
print(d, 'files downloaded')
print(m, 'missing file(s) found')
输出:
MISSING ['OLIVER_snare_disco_mixready_hybrid.wav']
3 files on website
2 files downloaded
1 missing file(s) found
我对编程比较陌生,想创建一个程序来解决我经常遇到的问题。
这是我的短篇小说的背景: 我在一个托管许多文件的网站上(我们谈论的是大约 500-1000 个小文件)。我当时想,“哦,天哪!我想把所有这些东西都放在我的硬盘里,这样我就知道我可以访问它们……但我可能不会以任何方式使用它们”。我继续下载该站点上的所有 500-1000 个文件,但在查看目标文件的属性时遇到了问题。假设网站上的 500 个文件中,我的计算机只有 499 个文件。只是我的运气。我想知道从我身边溜走的那个讨厌的文件是什么,并专门下载了那个文件。我不想做的是删除所有文件,然后再次尝试从网站下载所有文件。在网站上,没有任何迹象表明我下载了哪些文件,所以我完全不知所措。我可以按 Ctrl+C 输入每个项目,然后按 Ctrl+V 进入文件管理器搜索栏,但重复 500 次会很乏味。
现在,我想做的是:我想继续从网站上获取所有文件名(我下载的文件名和下载的文件名在我的驱动器中是相同的),将它们全部放在一个简单的 .txt 文档或其他东西中(该网站在我需要的文本旁边有多个不需要的文本,例如:
。如果无法像这样从站点中提取文本,那么我可以通过复制粘贴手动输入名称)。然后我希望计算机在文档中获取这些值,然后在特定的文件夹路径中搜索它(注意:实际文件在我要选择的根文件夹内的子文件夹中,因此程序必须能够在其中搜索根的多个文件夹)。然后我想让计算机知道文档中的值是否作为文件存在。如果该文件不存在,那么我希望文档中的 value/those 值显示为输出。我希望这个循环重复,直到所有的值都被通过。输出应列出不存在的值。
结论:你现在可能明白我想做什么,如果你不明白,请告诉我我需要详细说明的内容。我真的不在乎这个程序是如何制作的(什么语言或软件),我只想要一些有用的东西......但我自己不知道如何创建。
感谢阅读,如有任何回复我们将不胜感激!
Dhanwanth P :)
不用担心;我自己用 Excel 找到了一个解决方案(上帝,它很强大!)。
基本上,我从网站上复制并粘贴了我的值,然后使用过滤器仅显示 .wav
的值。然后我使用文件夹中的 Power Query 获取文件夹中所有文件名的列表。最后,我继续使用公式比较两者:
=IF(COUNTIF(B:B,D,"OK","MISSING")
如果您需要更多说明,我很乐意提供帮助,只需回复即可。可能有更简单的方法,但我个人喜欢这个 straight-forwardness。你只需要微软 excel!
编辑:
对我来说,我使用了这两个视频来介绍 power query 和 countif 函数:
如何获取 Excel 文件夹中的文件名列表(没有 VBA):https://www.youtube.com/watch?v=OSCPVBWOqwc
如何比较两个 Excel 工作表(并找出差异):https://www.youtube.com/watch?v=8Ou_wfzcKKk
就我而言,我 sheet 看起来像这样:
Python 中有一个解决方案,如果您想探索...
与您描述的类似,网站上的所有文件都列在 Excel 文件中 'website_files.xlsx'
并且所有文件都保存在文件夹 'downloaded_wav' 中。无论文件保存在根目录还是 sub-folders.
中,该脚本都将起作用然后我 运行 在 Python 脚本下面寻找丢失的文件:
import pandas as pd
import os
path_folder = 'C:\Users\Admin\Downloads\downloaded_wav'
downloaded_files = []
d,m = 0,0
for path_name, subfolders, files in os.walk(path_folder): #include all subfolders
for file in files:
d+=1
downloaded_files.append(file)
df = pd.read_excel('website_files.xlsx')
for file in df.values:
if file not in downloaded_files:
print('MISSING', file)
m+=1
print(len(df), 'files on website')
print(d, 'files downloaded')
print(m, 'missing file(s) found')
输出:
MISSING ['OLIVER_snare_disco_mixready_hybrid.wav']
3 files on website
2 files downloaded
1 missing file(s) found