![](/img/trans.png)
[英]How to input from input direcory folder and save output file in same name as input file in output folder in python
[英]Python input name in searchbox and find file in folder with same name
這里絕對是新手,我只是想制作一個簡單的代碼來掃描條形碼,然后當我點擊按鈕時,它會在特定文件夾中查找具有相同名稱的文件並打開該文件。
我到處尋找答案,但似乎不知道如何從輸入框中獲取值並將其與文件夾文件進行比較。
另外,如何在不輸入正確用戶名的情況下搜索文檔文件夾,以便它可以在任何帳戶上使用?
如果你們能指出我正確的方向,我會有點卡住,我將不勝感激。
到目前為止,您可以在這里看到我的代碼,盡管我不確定它是否正確。
import tkinter as tk
import os
# define print button function to open file
def sendprint():
os.startfile(r"C:\AutoPrint\test.txt")
# create window
window = tk.Tk()
window.geometry('300x200')
tk.Label(window,
text="Scan Bracode:").grid(row=0)
window.title('AutoPrint')
# create entrybox
entrybox = tk.Entry(window)
entrybox.grid(row=0, column=1)
# create button
tk.Button(window,
text='Print',
command=sendprint).grid(row=3,
column=0,
sticky=tk.W,
pady=4)
tk.mainloop()
從 Entry 中獲取文本
word = entrybox.get()
稍后您可以使用不同的功能簽入文件夾
os.listdir(folder)
def sendprint():
word = entrybox.get()
folder = r'C:\AutoPrint'
for filename in sorted(os.listdir(folder)):
if word.lower() in filename.lower():
fullpath = os.path.join(folder, filename)
os.startfile(fullpath)
glob.glob()
帶*
def sendprint():
word = entrybox.get()
folder = r'C:\AutoPrint'
pattern = os.path.join(folder, f'*{word}*')
print('pattern:', pattern)
filenames = glob.glob(pattern)
print('filenames:', filenames)
#if filenames:
# os.startfile(filenames[0])
for fullpath in filenames:
os.startfile(fullpath)
@furas 感謝您的幫助和提示,我最近才開始,不太確定如何移動!
在按照您的說明進行操作后,我設法將代碼放在一起,並且運行良好,只有一件小事困擾着我,當輸入框中沒有條目時,它仍然會打開我認為它是文件夾中的第一個文件的文件。
我可以修改什么以使其正常工作?
import tkinter as tk
import tkinter.font as font
import os
import glob
import time
from pynput.keyboard import Key, Controller, Listener
import ctypes
import keyboard
ctypes.windll.shcore.SetProcessDpiAwareness(True)
keyboard = Controller()
# values for widgets coordinates
ref_x=0
ref_y=0
# set values for thickboxes
pro_only=1
pro_x2=2
w_only=3
# create window
##window=ThemedTk(themebg=True)
##window.set_theme('clam')
window = tk.Tk()
window.geometry('650x400')
window.configure(bg='#fdfdfd')
window.title('AutoPrint')
myFont = font.Font(family='Calibri', size=13)
# create entrybox with label
entrybox = tk.Entry(window, width=28)
entrybox.place(x=ref_x + 200, y=ref_y + 10)
entrybox['font'] = myFont
entrybox.focus()
boxlabel = tk.Label(window, text='Scan Barcode:', bg='#fdfdfd')
boxlabel.place(x=ref_x + 15, y=ref_y + 10)
boxlabel['font'] = myFont
# define search funtions
def sendprint():
word = entrybox.get()
folder = r'C:\AutoPrint'
pattern = os.path.join(folder, f'*{word}*')
print('pattern:', pattern)
filenames = glob.glob(pattern)
print('filenames:', filenames)
if filenames:
os.startfile(filenames[0])
time.sleep(3)
keyboard.press(Key.enter)
time.sleep(0.5)
keyboard.release(Key.enter)
print (filenames)
else:
print ('Not found')
# create button
print_button = tk.Button(window, text='Print', command=sendprint, width=15, bg='#00a2ed', fg='white')
print_button.place(x=ref_x + 220, y=ref_y + 280)
print_button['font'] = myFont
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.