Python 获取文件路径

Python get filepath

我正在尝试创建一个简单的脚本来将 selected 文件(在 windows 资源管理器中)的文件路径复制到 python 中的剪贴板。 我一直在查看 pypercliptkinter,但不确定具体如何进行。

tkinter中的askopenfilename貌似很有前途,但我想selectpython外的文件,然后通过[=34=调用脚本] 上下文菜单。


编辑:

我想创建一个脚本,当我使用 windows 上下文菜单(右键单击)复制它时,它可以将本地文件路径更改为网络路径。

例如在 windows 资源管理器中右键单击我的文件 C:\Users\LocalUser\test.txt 时,我想添加一个下拉选项来复制文件路径,但将目录更改为例如D:\Users\LocalUser\test.txt.

我正在考虑通过在 RegEdit 中添加一个新键并在 Computer\HKEY_CLASSES_ROOT\*\shell 中向 python 脚本添加一个快捷方式来添加上下文菜单选项,但为了这样做,我需要为了能够复制,请先将文件路径添加到我的剪贴板。

你说得对,要在 windows 上下文菜单中添加内容,你需要编辑 windows 注册表编辑器。

要复制剪贴板中的文件位置,您可以使用 pyperclip 但这只能使用 tkinter 来完成:

from tkinter import Tk, filedialog

r = Tk()
r.withdraw()
filename = filedialog.askopenfilename()
#print(filename)
r.clipboard_clear()
r.clipboard_append(filename)
r.update() # now it stays on the clipboard after the window is closed
r.destroy()

你可以做的是,在文件资源管理器中,右键单击,然后在上下文菜单中,会有一个选项(例如,“复制文件的文件位置”),你可以添加使用注册表编辑器。然后单击该选项,将打开另一个 file dialog,其中您 select 的任何文件的位置都会被复制到剪贴板。


编辑:仅在上下文菜单中添加“复制路径”选项:

Reference

在注册表编辑器中,对于文件,在 HKEY_CLASSES_ROOT\*\shell\Copy Path\command 中,对于文件夹,在 HKEY_CLASSES_ROOT\Directory\shell\Copy Path\command 中,通过将(默认)的值设置为

添加以下命令
cmd.exe /c (echo.|set /p=%1) | clip

就是这样,不用python,只使用默认的命令行解释器,就可以把file/folders的完整路径复制到windows.

simple_upload.html

{% extends 'base.html' %}

{% load static %}

{% block content %}
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="myfile">
    <button type="submit">Upload</button>
  </form>

  {% if uploaded_file_url %}
    <p>File uploaded at: <a href="{{ uploaded_file_url }}">{{ uploaded_file_url }}</a></p>
  {% endif %}

  <p><a href="{% url 'home' %}">Return to home</a></p>
{% endblock %}

views.py

from django.shortcuts import render
from django.conf import settings
from django.core.files.storage import FileSystemStorage

def simple_upload(request):
    if request.method == 'POST' and request.FILES['myfile']:
        myfile = request.FILES['myfile']
        fs = FileSystemStorage()
        filename = fs.save(myfile.name, myfile)
        uploaded_file_url = fs.url(filename)
        return render(request, 'core/simple_upload.html', {
            'uploaded_file_url': uploaded_file_url
        })
     return render(request, 'core/simple_upload.html')

文件将被复制到base文件夹中,可以通过指定文件夹名称复制到指定文件夹

filename = fs.save('folderName/'+ myfile.name, myfile)