自定义 url 生成器,可在默认浏览器以外的浏览器中打开链接 - 初学者,非常感谢您的帮助

问题描述 投票:0回答:1

不确定这是否被归类为重复,因为其他帖子用不同的语言或 ide 等询问此问题。

我正在尝试设置一个自动互联网快捷方式创建器/开启器,这是我的第一个编程项目(除了几个可怕的谷歌表格公式(我认为有800个左右的令牌)),所以我不是100%确定什么我正在做,但我很擅长解决问题。

有效的基线成就(到目前为止):

我创建了 2 种新的文件格式(.txtp 和 .urlp,使用 regedit.exe,它们都可以运行并且已经过测试),它们会自动直接启动到 python shell 中。根据我编造的标准,这些文件与 txt 文件没有什么不同,除了 Windows 11 home(我的操作系统)识别这些文件的方式与正常的 .txt 文件或互联网快捷方式不同,就像正常的 .txt 操作系统会识别这些文件一样对于每种文件类型只有一个自动文件启动器,因此每次我使用除读取和编辑之外的功能打开 .txt 文件时,我都必须仔细检查并单击“打开方式...”,而此选项不是在我为该文件类型选择默认启动器后始终可用。请记住,我仍然可以使用我的 .txt 编辑器(sublime)编辑这些 .txtp 和 .urlp 文件,方法是打开编辑器本身并转到文件/打开文件,然后选择所需的文件。与 .urlp 文件类型相同,我只是希望我的桌面互联网快捷方式在与我的普通浏览器不同的浏览器中打开(尊敬的 min 和 vivaldi)。

ive 还设置了相当好的运行代码库,但是除了 sublime 之外我没有 IDE,并且 at ive 必须弄清楚如何让与 anaconda 等编程相关的插件工作,或者弄清楚如何使用它们,如果他们是。

到目前为止,我遇到的问题是:

url = input('please enter url - ')

file_name = input('please enter file name - ')
file_adress = 'C:\Users\sniez\OneDrive\Desktop\' + file_name + '.urlp'

open(file_name, mode=x, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

# things i need to edit into the file with/after the open() function
   var.url
   #the following is a url format sample(source: https://www.lyberty.com/encyc/articles/tech/dot_url_format_-_an_unofficial_guide.html), since i want the file type to behave the same as a regualr url file, just in a browser other than my default browser, (as far as i can tell that is changed by the working directory line)
   
   [InternetShortcut]
   URL=http://www.someaddress.com/
   WorkingDirectory=C:\WINDOWS\
   ShowCommand=7
   IconIndex=1
   IconFile=C:\WINDOWS\SYSTEM\url.dll
   Modified=20F06BA06D07BD014D
   HotKey=1601


input('press enter to exit')

问题

据我所知,使用 input() 函数,即使在定义变量时使用,它也应该暂停脚本并让我在继续并关闭 shell 窗口之前输入数据。它不这样做。它快速地闪现和消失

我还需要编辑使用 open(... mode=x...) 创建的文件,但是我找不到任何我在堆栈溢出或任何地方理解的方法来做到这一点,我确信有一些东西可以告诉我我该怎么做,但我还没有找到它,所以我将在这里添加它,如果有人有教程链接或可以快速解释它,我非常感谢。

我也不确定是否需要更改网址的格式

这并不重要,但如果你愿意,你可以阅读它

我知道我可以通过简单地按照正常方式创建一个 url 快捷方式然后将其扩展名命名为“.urlp”来完成手头的任务,然后让 Windows 识别出我总是使用特定浏览器而不是默认浏览器打开它,然而,我已经拖延了 5 年学习如何编程,我认为这是一个很好的开始方式(我会观看其中一个 YouTube 系列或其他东西,但是我的总体日程安排非常有限,我不能做更多的事情)修补这个。输入这个问题花了我 3 天的时间来寻找零碎的时间)

我想不出我应该包含的任何其他信息,如果您对我的问题有疑问,请告诉我,哈哈

编辑#1 自从我发布以来,我已经在这方面做了相当多的工作,这里是更新的代码。

    #importing modules
    import string
    import module
    import start

    #taking user imput
    url = input('please enter site url - ')
    filename = string(input("please enter file name - ") + '.py')


    # we now open the file
    file = open.module(('C:/Users/sniez/OneDrive/Desktop/' + filename), mode=w)

    #writing to file
    import webbrowser
    import url

    browser = "C:/Users/sniez/AppData/Local/min/min.exe %s"

    webbrowser.get(f"browser: {browser}").open(f"url: {url}")

    file.close()

    #now starting writen file to show functionality
    start.file


    #variable method friend gave me that i dont know how it works?:
    #number = 1
    #print("number:", string(number))
    #print(f"number: {number}")

我现在已经验证输入函数和变量都可以正常工作,但是打开函数仍然无法工作,我不确定为什么。再次强调,非常感谢任何帮助。

python python-3.x windows sublime-text-plugin
1个回答
0
投票

我相信发生的情况是您遇到了未处理的异常,导致脚本退出。这可能是因为您的代码中存在大量语法错误:难怪它不起作用。

试试这个代码:

import os


url = input('please enter url - ')

file_name = input('please enter file name - ')
file_adress = os.path.join(r'C:\Users\sniez\OneDrive\Desktop', file_name + '.urlp')

with open(file_name, mode="x", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) as f:
    f.write("""Insert your text here.
Next line,
Etc.""")

input('press enter to exit')

以下是旧代码中的问题:

  1. 您不能像在
    file_address
    中那样以反斜杠结束字符串。如果要使用单反斜杠,还必须在字符串的左引号前面添加
    r
    (例如,
    r'string\with\backslash'
  2. 使用
    open
    函数时,请使用字符串值指定
    mode
    参数,而不仅仅是
    x
    ,因为代码会假设它正在查找名为
    x
    的变量的值(该变量不存在,导致a
    NameErrror
    。所以将其替换为
    'x'
  3. 这并不重要,但您应该使用
    with open(...) as f: ...
    而不是
    f = open(...)
    。更多的是安全和“安全”功能。执行
    with
    块中的所有写入命令。
  4. 将来,请使用对初学者更友好的代码编辑器,例如vscode,其“集成”终端在发生错误时不会退出。

祝你编程愉快,下次,不要在问题中提供不必要的细节。我们不在乎这是您的第一个项目。

© www.soinside.com 2019 - 2024. All rights reserved.