Also habe ich diesen Code für meine Forschung erstellt, aber ich möchte es für viele Dateien verwenden, ich möchte es nicht manuell tun, was bedeutet, einige Zeilen in meinem Code erneut eingeben, um gewünschte zu verwenden Datei. Wie verwende ich input
Befehl in Python (Ich arbeite mit Python 2.7 unter Windows OS), um es schneller zu verwenden, nur durch Eingabe des Namens der gewünschten Datendatei. Mein Code so weit:Eingabe Abfrage für Python-Code
import iodata as io
import matplotlib.pyplot as plt
import numpy as np
import time
from scipy.signal import welch
from scipy import signal
testInstance = io.InputConverter()
start = time.time()
conversionError = io.ConversionError()
#data = testInstance.convert(r"S:\Doktorat\Python\", 1", conversionError)
data = testInstance.convert(r"/Users/PycharmProjects/Hugo/20160401", "201604010000", conversionError)
end = time.time()
print("time elapsed " + str(end - start))
if(conversionError.conversionSucces):
print("Conversion succesful")
if(conversionError.conversionSucces == False):
print("Conversion failed: " + conversionError.conversionErrorLog)
print "Done!"
# Create a new subplot for two cannals 1 & 3
a = np.amin(data.data)
Bx = data.data[0,]
By = data.data[1,]
dt = float(300)/266350
Fs = 1/dt
t = np.arange(0,300,dt*1e3)
N = len(Bx)
M = len(By)
time = np.linspace(0,300,N)
time2 = np.linspace(0,300,M)
filename = 'C:/Users/PycharmProjects/Hugo/20160401/201604010000.dat'
d = open(filename,'rb')
degree = u"\u00b0"
headersize = 64
header = d.read(headersize)
ax1 = plt.subplot(211)
ax1.set_title(header[:16] + ', ' + # station name
'Canals: '+header[32:33]+' and '+header[34:35]+ ', ' # canals
+'Temp'+header[38:43]+degree+'C' # temperature
+', '+'Time:'+header[26:32]+', '+'Date'+' '+header[16:26]) # date
plt.ylabel('Pico Tesle [pT]')
plt.xlabel('Time [ms]')
plt.grid()
plt.plot(time[51:-14], Bx[51:-14], label='Canal 1', color='r', linewidth=0.1, linestyle="-")
plt.plot(time2[1:-14], By[1:-14], label='Canal 3', color='b', linewidth=0.1, linestyle="-")
plt.legend(loc='upper right', frameon=False,)
# Create a new subplot for FFT
plt.subplot(212)
plt.title('Fast Fourier Transform')
plt.ylabel('Power [a.u.]')
plt.xlabel('Frequency Hz')
xaxis2 = np.arange(0,470,10)
plt.xticks(xaxis2)
fft1 = (Bx[51:-14])
fft2 = (By[1:-14])
plt.grid()
# Loop for FFT data
for dataset in [fft1]:
dataset = np.asarray(dataset)
freqs, psd = welch(dataset, fs=266336/300, window='hamming', nperseg=8192)
plt.semilogy(freqs, psd/dataset.size**0, color='r')
for dataset2 in [fft2]:
dataset2 = np.asarray(dataset2)
freqs2, psd2 = welch(dataset2, fs=266336/300, window='hamming', nperseg=8192)
plt.semilogy(freqs2, psd2/dataset2.size**0, color='b')
plt.show()
Wie Sie sehen können gibt es einige Orte, an denen es besser wäre, input
zu setzen, und wenn ich den Code ausführen kann ich Namen von Dateinamen usw. zu Python schreiben, anstatt jeden einzelnen pythonfile schaffen mit den angegebenen Informationen im Code. BTW. Ich benutze Pycharm zu meinem Python.
So möchten Sie gerade 'zu formatieren Dateiname 'nicht fest codiert sein? – Carcigenicate
@ Carcigenicate Ich denke, meine Frage war nicht zu spezifisch. Schau, ich habe Daten von Messstationen, hier ist "Hugo". Und von diesen Stationen aus habe ich viele Messungen in Dateien gespeichert. Was ich brauche, ist meinen Code auszuführen und einfach den Eingabebefehl z. Datei: Hugo, Messung: 201604010000 und führen Sie es aus. – Hiddenguy
Willkommen in der Gemeinschaft. Wenn eine Antwort Ihnen geholfen hat, Ihr Problem zu lösen, sollten Sie es akzeptieren. Siehe [Wie funktioniert die Annahme einer Antwort?] (Https://meta.stackexchange.com/a/5235). – jk622