使用用户输入修复文件路径以创建搜索文件功能
Fixing File path with user input to create search for file function
我有一堆名为 (modelnumber)_filter 的 CSV 文件。询问用户他们正在搜索哪种型号
示例用户输入:"1.3C-H4SL-D1"
那么接下来会加载文件路径:
"C:\Users\ADMIN-SURV\Desktop\data_pull.3C-H4SL-D1_filter.csv"
EX CSV
"Search Results"
"Summary"
"Saved on","12/10/2021 1:36:26 PM"
"Searched for","Avigilon (ONVIF) 2.0C-H5A-D1"
"In document","C:\Users\ADMIN-SURV\Desktop\data_pull\my.pdf"
"Number of document(s) found","1"
"Number of instance(s) found","18"
"File name","Title","Page","Search Instance"
"IslandView.pdf","","33","H5A-D1(3022506) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:692 192.168.50.189 "
"IslandView.pdf","","55","H5A-D1(3022509) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:657 192.168.60.243 "
"IslandView.pdf","","55","H5A-D1(3022547) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:469 192.168.60.248 "
"IslandView.pdf","","55","H5A-D1(3022533) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:700 192.168.50.190 "
"IslandView.pdf","","87","104 RIGHT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.90.212 00:18:85:"
"IslandView.pdf","","87","101 LEFT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 192.168.50.243 00:18:85:2E:"
"IslandView.pdf","","87","H5A-D1(3022627) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:55 192.168.60.249 "
"IslandView.pdf","","88","H5A-D1(3669534) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:463 192.168.18.202 "
"IslandView.pdf","","94","103 LEFT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.245 00:18:85:"
"IslandView.pdf","","146","104 RIGHT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.90.212 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022509) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.243 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022506) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.50.189 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022533) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.50.190 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022547) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.248 00:18:85:"
"IslandView.pdf","","201","101 LEFT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.50.243 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022622) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.245 00:18:85:"
"IslandView.pdf","","202","H5A-D1(3022627) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.249 00:18:85:"
"IslandView.pdf","","203","H5A-D1(3669534) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.18.202 00:18:85:"
然后还将使用该输入创建一个新文件:
"C:\Users\ADMIN-SURV\Desktop\data_pull.3C-H4SL-D1.txt"
这是我的代码。
import csv
import re
import sys
new_file = input("What is the camera model? **Use Exact Casing and Symbols**")
file_path = "C:\Users\ADMIN-SURV\Desktop\data_pull\filter_results\"
end_path = file_path + new_file + ".txt"
print(end_path)
sys.stdout = open(end_path, 'x')
with open("C:\Users\ADMIN-SURV\Desktop\data_pull\" + new_file + "_filter.csv") as fid:
print(fid)
input_file = csv.reader(fid)
for row in input_file:
if len(row) >= 4:
if row[0] == 'File name':
# skip the header row
continue
# m = re.match(r".*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", row[3])
m = re.match(r'.*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})', row[3])
if m:
print(m.group(1))
else:
print(row[3])
sys.stdout.close()
截至目前,当我 运行 这段代码时,我得到以下错误
Traceback (most recent call last):
File "C:\Users\ADMIN-SURV\PycharmProjects\pdf_scraping\test_file.,py", line 28, in
with open("C:\Users\ADMIN-SURV\Desktop\data_pull\" + new_file + "_filter.csv") as fid:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\ADMIN-SURV\Desktop\data_pull.3C-H4SL-D1_filter.csv'
CSV 文件已经存在,应该可以通过用户输入找到。
.TXT 文件应由用户输入创建。
运行 它与 Python 3.8.0,结果是 ../filter_results 中的文件,没有扩展名。我将其更改为 .txt,这是它的内容:
<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>
你得到的原因
<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>
是因为sys.stdout = open(end_path, 'x')
.
open(end_path, 'x')
returns
<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>
所以我们只是稍微清理一下逻辑。我们将使用 'x'
参数打开新文件(这意味着如果没有创建文件,它将创建文件并写入。但是,如果它已经创建,它将不允许打开和覆盖它)
然后使用您的逻辑,我们只需将 ip 地址写入该文件即可。
import csv
import re
import sys
new_file = input("What is the camera model? **Use Exact Casing and Symbols**")
file_path = "C:\Users\ADMIN-SURV\Desktop\data_pull\filter_results\"
end_path = file_path + new_file + ".txt"
print(end_path)
output_txt_file = open(end_path, 'x')
with open("C:\Users\ADMIN-SURV\Desktop\data_pull\" + new_file + "_filter.csv") as fid:
print(fid)
input_file = csv.reader(fid)
for row in input_file:
if len(row) >= 4:
if row[0] == 'File name':
# skip the header row
continue
# m = re.match(r".*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", row[3])
m = re.match(r'.*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})', row[3])
if m:
print(m.group(1).strip())
output_txt_file.write(m.group(1).strip() + '\n')
else:
print(row[3])
output_txt_file.close()
我有一堆名为 (modelnumber)_filter 的 CSV 文件。询问用户他们正在搜索哪种型号
示例用户输入:"1.3C-H4SL-D1"
那么接下来会加载文件路径:
"C:\Users\ADMIN-SURV\Desktop\data_pull.3C-H4SL-D1_filter.csv"
EX CSV
"Search Results"
"Summary"
"Saved on","12/10/2021 1:36:26 PM"
"Searched for","Avigilon (ONVIF) 2.0C-H5A-D1"
"In document","C:\Users\ADMIN-SURV\Desktop\data_pull\my.pdf"
"Number of document(s) found","1"
"Number of instance(s) found","18"
"File name","Title","Page","Search Instance"
"IslandView.pdf","","33","H5A-D1(3022506) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:692 192.168.50.189 "
"IslandView.pdf","","55","H5A-D1(3022509) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:657 192.168.60.243 "
"IslandView.pdf","","55","H5A-D1(3022547) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:469 192.168.60.248 "
"IslandView.pdf","","55","H5A-D1(3022533) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:700 192.168.50.190 "
"IslandView.pdf","","87","104 RIGHT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.90.212 00:18:85:"
"IslandView.pdf","","87","101 LEFT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 192.168.50.243 00:18:85:2E:"
"IslandView.pdf","","87","H5A-D1(3022627) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:55 192.168.60.249 "
"IslandView.pdf","","88","H5A-D1(3669534) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown Logical ID:463 192.168.18.202 "
"IslandView.pdf","","94","103 LEFT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.245 00:18:85:"
"IslandView.pdf","","146","104 RIGHT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.90.212 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022509) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.243 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022506) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.50.189 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022533) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.50.190 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022547) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.248 00:18:85:"
"IslandView.pdf","","201","101 LEFT ENTRY Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.50.243 00:18:85:"
"IslandView.pdf","","201","H5A-D1(3022622) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.245 00:18:85:"
"IslandView.pdf","","202","H5A-D1(3022627) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.60.249 00:18:85:"
"IslandView.pdf","","203","H5A-D1(3669534) Avigilon (ONVIF) 2.0C-H5A-D1 Unknown 192.168.18.202 00:18:85:"
然后还将使用该输入创建一个新文件:
"C:\Users\ADMIN-SURV\Desktop\data_pull.3C-H4SL-D1.txt"
这是我的代码。
import csv
import re
import sys
new_file = input("What is the camera model? **Use Exact Casing and Symbols**")
file_path = "C:\Users\ADMIN-SURV\Desktop\data_pull\filter_results\"
end_path = file_path + new_file + ".txt"
print(end_path)
sys.stdout = open(end_path, 'x')
with open("C:\Users\ADMIN-SURV\Desktop\data_pull\" + new_file + "_filter.csv") as fid:
print(fid)
input_file = csv.reader(fid)
for row in input_file:
if len(row) >= 4:
if row[0] == 'File name':
# skip the header row
continue
# m = re.match(r".*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", row[3])
m = re.match(r'.*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})', row[3])
if m:
print(m.group(1))
else:
print(row[3])
sys.stdout.close()
截至目前,当我 运行 这段代码时,我得到以下错误
Traceback (most recent call last): File "C:\Users\ADMIN-SURV\PycharmProjects\pdf_scraping\test_file.,py", line 28, in with open("C:\Users\ADMIN-SURV\Desktop\data_pull\" + new_file + "_filter.csv") as fid: FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\ADMIN-SURV\Desktop\data_pull.3C-H4SL-D1_filter.csv'
CSV 文件已经存在,应该可以通过用户输入找到。 .TXT 文件应由用户输入创建。
运行 它与 Python 3.8.0,结果是 ../filter_results 中的文件,没有扩展名。我将其更改为 .txt,这是它的内容:
<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>
你得到的原因
<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>
是因为sys.stdout = open(end_path, 'x')
.
open(end_path, 'x')
returns
<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>
所以我们只是稍微清理一下逻辑。我们将使用 'x'
参数打开新文件(这意味着如果没有创建文件,它将创建文件并写入。但是,如果它已经创建,它将不允许打开和覆盖它)
然后使用您的逻辑,我们只需将 ip 地址写入该文件即可。
import csv
import re
import sys
new_file = input("What is the camera model? **Use Exact Casing and Symbols**")
file_path = "C:\Users\ADMIN-SURV\Desktop\data_pull\filter_results\"
end_path = file_path + new_file + ".txt"
print(end_path)
output_txt_file = open(end_path, 'x')
with open("C:\Users\ADMIN-SURV\Desktop\data_pull\" + new_file + "_filter.csv") as fid:
print(fid)
input_file = csv.reader(fid)
for row in input_file:
if len(row) >= 4:
if row[0] == 'File name':
# skip the header row
continue
# m = re.match(r".*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", row[3])
m = re.match(r'.*(.* [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})', row[3])
if m:
print(m.group(1).strip())
output_txt_file.write(m.group(1).strip() + '\n')
else:
print(row[3])
output_txt_file.close()