2017-12-30 45 views
0

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.

+1

So möchten Sie gerade 'zu formatieren Dateiname 'nicht fest codiert sein? – Carcigenicate

+0

@ 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

+0

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

Antwort

1

Wenn alles, was Sie zu tun versuchen, ist der fest codierten Pfad loszuwerden, sollten Sie in der Lage sein, Ihren Namen String-Variablen mit Eingabe

name = raw_input("Name: ") 
measurement = raw_input("Measurement: ") 
filename = "C:/Users/PycharmProjects/{0}/{1}".format(name, measurement) 

siehe raw_input und string formatting