首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用用户输入修复文件路径以创建搜索文件功能

用用户输入修复文件路径以创建搜索文件功能
EN

Stack Overflow用户
提问于 2021-12-13 14:46:35
回答 2查看 81关注 0票数 -1

我有一堆名为(模型号)_filter的CSV文件。用户会被问到他们正在搜索哪个模型

示例用户输入:"1.3C-H4SL-D1“,因此文件路径将被加载:

"C:\Users\ADMIN-SURV\Desktop\data_pull\1.3C-H4SL-D1_filter.csv“

EX CSV

代码语言:javascript
运行
复制
"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\1.3C-H4SL-D1.txt“

这是我的密码。

代码语言:javascript
运行
复制
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()

到目前为止,当我运行这段代码时,我会得到以下错误

文件"C:\Users\ADMIN-SURV\PycharmProjects\pdf_scraping\test_file.,py,第28行,打开(“C:\Users\ADMIN-SURV\Desktop\data_

\”+ new_file + "_filter.csv")作为fid: FileNotFoundError: Errno 2没有这样的文件或目录:'C:\Users\ADMIN-SURV\Desktop\data_pull\1.3C-H4SL-D1_filter.csv‘

CSV文件已经存在,应该通过用户输入找到。应该用用户输入创建.TXT文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-13 16:30:12

你得到的原因

<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull\1.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>

是因为sys.stdout = open(end_path, 'x')

open(end_path, 'x')返回

<_io.TextIOWrapper name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull\1.3C-H4SL-D1_filter.csv' mode='r' encoding='cp1252'>

所以我们要把逻辑搞清楚一点。我们将使用'x'参数打开新文件(这意味着如果没有创建,它将创建该文件,然后编写。但是,如果它已经创建,它将不允许打开和覆盖它)

然后使用您的逻辑,我们只需将ip地址写入该文件。

代码语言:javascript
运行
复制
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()
票数 2
EN

Stack Overflow用户

发布于 2021-12-13 15:10:09

使用Python3.8.0运行它,结果是一个没有扩展名的../filter_results中的文件。我将其改为.txt,这是它的内容:

name='C:\Users\maxim\PycharmProjects\FB_Books\data_pull\1.3C-H4SL-D1_filter.csv‘模式=’

<_io.TextIOWrapper‘>编码=’cp1252 1252‘>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70336474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档