def plot(self): self.is_running = False pwd_path = os.getcwd() script_path = os.path.join(pwd_path, 'algo_galileo_2e235eb933c9_deg90\\An_test') folder_path = os.path.join(pwd_path, 'source\\Test_Source_Data') os.chdir(script_path) os.system('powershell -Command "./csv_output.sh {0}"'.format(folder_path)) time.sleep(30) 这段代码中,怎么把路径pwd_path改为os.getcwd()的上级目录
时间: 2024-02-13 14:02:49 浏览: 27
可以使用os.path.abspath(os.path.join(os.getcwd(), ".."))来获取当前工作目录的上级目录,然后将其赋值给pwd_path。所以,可以将第三行代码改为:
```
pwd_path = os.path.abspath(os.path.join(os.getcwd(), ".."))
```
这样就能获取到当前工作目录的上级目录了。
相关问题
def plot(self): self.is_running = False pwd_path = os.path.abspath(os.path.join(os.getcwd(), "..")) script_path = os.path.join(pwd_path, 'callisto-test-tool\\algo_galileo_2e235eb933c9_deg90\\An_test') folder_path = os.path.join(pwd_path, 'callisto-test-tool\\source\\Test_Source_Data') os.chdir(script_path) os.system('powershell -Command "./csv_output.sh {0}"'.format(folder_path)) 怎么检测该段程序中powershell是否运行完毕
要检测该段程序中 `powershell` 是否运行完毕,可以使用 Python 的 `subprocess` 模块来代替 `os.system` 函数来运行 `powershell`,并使用 `communicate()` 方法来等待 `powershell` 进程结束。例如:
```
import subprocess
def plot(self):
self.is_running = False
pwd_path = os.path.abspath(os.path.join(os.getcwd(), ".."))
script_path = os.path.join(pwd_path, 'callisto-test-tool\\algo_galileo_2e235eb933c9_deg90\\An_test')
folder_path = os.path.join(pwd_path, 'callisto-test-tool\\source\\Test_Source_Data')
os.chdir(script_path)
cmd = 'powershell -Command "./csv_output.sh {0}"'.format(folder_path)
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate() # 等待进程结束
if process.returncode == 0:
print('程序执行成功!')
else:
print('程序执行失败!')
```
这样就可以在程序执行完成后得到 `powershell` 进程的返回值,并根据返回值来判断程序是否执行成功。如果返回值为 0,则表示程序执行成功,否则表示程序执行失败。
import tkinter as tk import pandas as pd import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import os class ExcelPlotter(tk.Frame): def init(self, master=None): super().init(master) self.master = master self.master.title("图方便") self.file_label = tk.Label(master=self, text="Excel File Path:") self.file_label.grid(row=0, column=0, sticky="w") self.file_entry = tk.Entry(master=self) self.file_entry.grid(row=0, column=1, columnspan=2, sticky="we") self.file_button = tk.Button(master=self, text="Open", command=self.open_file) self.file_button.grid(row=0, column=3, sticky="e") self.plot_button = tk.Button(master=self, text="Plot", command=self.plot_data) self.plot_button.grid(row=1, column=2, sticky="we") self.name_label = tk.Label(master=self, text="Out Image Name:") self.name_label.grid(row=2, column=0, sticky="w") self.name_entry = tk.Entry(master=self) self.name_entry.grid(row=2, column=1, columnspan=2, sticky="we") self.save_button = tk.Button(master=self, text="Save", command=self.save_image) self.save_button.grid(row=2, column=3, sticky="e") self.figure = plt.figure(figsize=(5, 4), dpi=150) self.canvas = FigureCanvasTkAgg(self.figure, master=self) self.canvas.get_tk_widget().grid(row=4, column=0, columnspan=4, sticky="we") self.pack() def open_file(self): file_path = tk.filedialog.askopenfilename(filetypes=[("Excel Files", "*.xls")]) self.file_entry.delete(0, tk.END) self.file_entry.insert(tk.END, file_path) def plot_data(self): file_path = self.file_entry.get() if os.path.exists(file_path): data = pd.read_excel(file_path) plt.plot(data['波长(nm)'], data['吸光度'], 'k') plt.xlim(300, 1000) plt.xlabel('Wavelength(nm)', fontsize=16) plt.ylabel('Abs.', fontsize=16) plt.gcf().subplots_adjust(left=0.13, top=0.91, bottom=0.16) plt.savefig('Last Fig', dpi=1000) plt.show() def save_image(self): if self.figure: file_path = tk.filedialog.asksaveasfilename(defaultextension=".png") if file_path: self.figure.savefig(file_path) root = tk.Tk() app = ExcelPlotter(master=root) app.mainloop()帮我增加一个删除当前图像的功能
好的,您可以在 `ExcelPlotter` 类中添加一个名为 `delete_image` 的方法,实现删除当前图像的功能。可以在该方法中调用 `self.figure.clf()` 清空当前图像,然后在界面上更新显示。下面是修改后的代码:
```python
import tkinter as tk
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import os
class ExcelPlotter(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title("图方便")
self.file_label = tk.Label(master=self, text="Excel File Path:")
self.file_label.grid(row=0, column=0, sticky="w")
self.file_entry = tk.Entry(master=self)
self.file_entry.grid(row=0, column=1, columnspan=2, sticky="we")
self.file_button = tk.Button(master=self, text="Open", command=self.open_file)
self.file_button.grid(row=0, column=3, sticky="e")
self.plot_button = tk.Button(master=self, text="Plot", command=self.plot_data)
self.plot_button.grid(row=1, column=2, sticky="we")
self.delete_button = tk.Button(master=self, text="Delete", command=self.delete_image)
self.delete_button.grid(row=1, column=3, sticky="e")
self.name_label = tk.Label(master=self, text="Out Image Name:")
self.name_label.grid(row=2, column=0, sticky="w")
self.name_entry = tk.Entry(master=self)
self.name_entry.grid(row=2, column=1, columnspan=2, sticky="we")
self.save_button = tk.Button(master=self, text="Save", command=self.save_image)
self.save_button.grid(row=2, column=3, sticky="e")
self.figure = plt.figure(figsize=(5, 4), dpi=150)
self.canvas = FigureCanvasTkAgg(self.figure, master=self)
self.canvas.get_tk_widget().grid(row=4, column=0, columnspan=4, sticky="we")
self.pack()
def open_file(self):
file_path = tk.filedialog.askopenfilename(filetypes=[("Excel Files", "*.xls")])
self.file_entry.delete(0, tk.END)
self.file_entry.insert(tk.END, file_path)
def plot_data(self):
file_path = self.file_entry.get()
if os.path.exists(file_path):
data = pd.read_excel(file_path)
plt.plot(data['波长(nm)'], data['吸光度'], 'k')
plt.xlim(300, 1000)
plt.xlabel('Wavelength(nm)', fontsize=16)
plt.ylabel('Abs.', fontsize=16)
plt.gcf().subplots_adjust(left=0.13, top=0.91, bottom=0.16)
plt.show()
def delete_image(self):
if self.figure:
self.figure.clf()
self.canvas.draw()
def save_image(self):
if self.figure:
file_path = tk.filedialog.asksaveasfilename(defaultextension=".png")
if file_path:
self.figure.savefig(file_path)
root = tk.Tk()
app = ExcelPlotter(master=root)
app.mainloop()
```
在界面上添加了一个名为 `Delete` 的按钮,点击该按钮会调用 `delete_image` 方法。该方法会清空当前图像并在界面上更新显示。