import os
os.getcwd()
'X:\\py4eng-course\\notebooks\\py4eng-pt'
os.path.isdir(r"C:\Windows")
True
workdir = os.path.expanduser(r"~\Documents\pycurso")
if not os.path.isdir(workdir):
os.mkdir(workdir)
texto_filename = workdir + "\meu-texto.txt"
endl = "\n"
with open(texto_filename, "w") as texto_file:
texto_file.write("Com Python" + endl)
texto_file.write("sou mais feliz" + endl)
texto_file.write("-- fim --" + endl)
Lendo arquivo texto:
with open(texto_filename, "r") as texto_file:
texto_lido = texto_file.readline()
print(texto_lido)
Com Python
texto_lido = ""
with open(texto_filename, "r") as texto_file:
for line in texto_file:
texto_lido += line
print(texto_lido)
Com Python sou mais feliz -- fim --
Forma insegura de abrir um arquivo
texto_file = open(texto_filename)
Limpando a sujeira:
os.rmdir(workdir)
--------------------------------------------------------------------------- OSError Traceback (most recent call last) <ipython-input-57-3c018b180495> in <module>() ----> 1 os.rmdir(workdir) OSError: [WinError 145] The directory is not empty: 'C:\\Users\\itghisi\\Documents\\pycurso'
Ops! Diretório não está vazio. Vamos apelar para o módulo shutil
import shutil
shutil.rmtree(workdir)
shutil.copy
<function shutil.copy>
Links:
import numpy as np
import openpyxl
m = []
t = []
wb = openpyxl.load_workbook(filename='../resource/well.xlsx')
sheet = wb.active
sheet.cell("A1").value
't (ano)'
for row in sheet.rows[1:]:
t.append(int(row[0].value))
m.append(row[1].value)
t = np.array(t)
m = np.array(m)
print(t)
print(m)
[0 1 2 3 4 5] [ 100. 77. 61. 49.5 41. 34.5]
Links:
Vamos realizar uma Krigagem com o programa KB2D da GSLIB. Os binários podem ser obtidos neste link.
Para execução de programas externos, utilizaremos o módulo subprocess.
import subprocess
subprocess.call("notepad")
if ret == 0:
print("Execução sem erros")
No caso de programas em Fortran que utilizam redirecionamento para entrada de dados (como é o caso do kb2d.exe), precisamos definir o parâmetro shell=True
para que a chamada seja feita utilizando o shell do sistema:
workdir = ... #diretório onde estão os dados e o executável kb2d.exe
subprocess.call("kb2d.exe < kb2d.par", shell=True, cwd=workdir)
Os arquivos de entrada que serão utilizados na krigagem podem ser obtidos no repositório do curso no GitHub.
Parte 1: Realize a execução do programa kb2d.exe com os exemplos disponibilizados e crie uma função que leia o arquivo do resultado da krigagem para um Array.
Dicas:
split()
para dividir uma linha do arquivo pelos espaços em brancoreadline()
do objecto file para pular o cabeçalhoresult = ... # Resultado lido do arquivo
xi = np.linspace(0, 25 * 2.0, 25)
yi = np.linspace(0, 25 * 2.0, 25)
plt.contourf(xi, yi, results.reshape(25,25))
plt.colorbar()
Parte 2: Crie um arquivo template e use para disparar krigagens variando os alcances máximos e mínimos (a_max, a_min).