반응형

방사율 정리

모든 물체들은 재료나 표면 상태에 따라 적외선 에너지를 다르게 방출하고 있습니다. 방사율은 물질이 적외선 에너지를 방출하는 효율성을 설명합니다.

 

방사율의 물리학

적외선 에너지는 고체, 액체 또는 기체와 같은 물질에 입사할 때 흡수, 반사 및 투과 특성을 나타냅니다.

 

흡수(Absorption)

흡수는 적외선 에너지가 물질에 흡수되는 정도입니다플라스틱, 세라믹 및 섬유와 같은 재료는 좋은 흡수제입니다실제 물체에 의해 흡수된 적외선 에너지는 일반적으로 전도, 대류 또는 복사에 의해 주변으로 재전송됩니다.

 

투과(Transmission)

투과율은 적외선 에너지가 물질을 통과하는 정도입니다. 7~14µm 사이의 적외선 영역에서 에너지를 효율적으로 전달하는 재료는 거의 없습니다게르마늄은 적외선 에너지를 잘 투과시키므로 적외선 카메라의 렌즈 재료로 자주 사용됩니다.

 

반사(Reflection)

반사는 적외선 에너지가 재료에서 반사되는 정도입니다알루미늄, , 니켈과 같은 광택이 나는 금속은 매우 좋은 반사체입니다.

 

에너지 보존은 입사 에너지의 양이 흡수, 반사 및 투과 에너지의 합과 같다는 것을 의미합니다.

 

입사 에너지 = 흡수 에너지 + 투과 에너지 + 반사 에너지

 

일정한 온도에서 진공 상태의 물체는 입력되거나 출력되는 다른 에너지원이 없습니다

 

물체에 의해 흡수된 에너지는 열 에너지를 증가시키지만 투과 및 반사 에너지는 증가하지 않습니다물체의 온도가 일정하게 유지되기 위해서는 물체가 흡수하는 에너지와 동일한 양의 에너지를 방출해야 합니다. 따라서 좋은 흡수체인 물체는 좋은 방출체이고 열악한 흡수체인 물체는 나쁜 방출체입니다.

 

방출 에너지 = 흡수 에너지

 

흡수 에너지를 방출 에너지로 대체하면 다음 식으로 교체됩니다.

 

입사 에너지 = 방출 에너지 + 투과 에너지 + 반사 에너지

 

입사 에너지를 100%로 설정하면 다음 식으로 교체됩니다.

 

100% = %(방출된 에너지) + %(투과된 에너지) + %(반사된 에너지)

 

방사율은 물질이 에너지를 방출하는 효율과 같기 때문에 다음과 같이 설명할 수 있습니다.

 

100% = 방사율 + %(투과 에너지) + %(반사 에너지)

 

%(투과 에너지) %(방출 에너지)는 다음 식과 같이 교체 가능합니다.

 

100% = 방사율 + 투과율 + 반사율

 

위의 식에 의하면 방사율, 투과율 및 반사율 사이에 균형이 있습니다

 

물체의 방사율이 증가하면 투과율과 반사율의 합은 감소해야 합니다마찬가지로 물체의 반사율이 증가하면 방사율과 투과율의 합은 감소해야 합니다.

 

대부분의 고체 물체는 적외선 에너지의 투과율이 매우 낮습니다. 입사 에너지의 대부분은 흡수되거나 반사됩니다

 

투과율을 0으로 설정하면 다음과 같이 다시 표현할 수 있습니다.

 

100% = 방사율 + 반사율

 

에너지를 전달하지 않는 물체의 경우 방사율과 반사율 사이에는 단순한 균형이 있습니다방사율이 증가하면 반사율은 감소해야 합니다반사율이 증가하면 방사율은 감소해야 합니다

 

예를 들어,

방사율이 0.92인 플라스틱 재료의 반사율은 0.08입니다

방사율 = 0.12인 광택 처리된 알루미늄 표면은 반사율 = 0.88입니다.

 

대부분의 재료의 방사 및 반사는 전자기 스펙트럼의 가시광선 및 적외선 영역에서 유사합니다예를 들어 광택 처리된 금속은 가시광선과 적외선 모두에서 방사율이 낮고 반사율이 높습니다.

 

방사율의 영향

열화상 카메라는 카메라 디텍터의 감도에 의해 결정되는 파장 범위에서 적외선 에너지의 합을 감지하고 측정합니다인간의 눈이 가시광선 파장의 빛을 색상으로 구별할 수 있는 것처럼 열화상 카메라는 7µm의 에너지와 14µm 사이의 에너지를 구별할 수 있습니다디텍터는 작동 파장 범위에서 방출된 에너지를 감지하고 정량화하여 물체의 온도를 계산합니다온도는 측정된 에너지를 플랑크의 흑체 법칙에 따라 동일한 양의 에너지를 방출하는 흑체의 온도와 연관시켜 계산됩니다.

 

물체의 방사율은 물체가 방출하는 에너지 양에 영향을 미치므로 방사율은 카메라의 온도 계산에도 영향을 줍니다동일한 온도에 있는 두 물체, 즉 하나는 방사율이 높고 다른 하나는 낮은 경우를 고려해 보면, 두 물체의 온도가 같더라도 방사율이 낮은 물체는 더 적은 에너지를 방출합니다결과적으로 카메라에서 계산한 온도는 방사율이 높은 물체에 대해 계산된 온도보다 낮습니다.

 

겉보기 온도 (Apparent Temperature)

열화상 카메라는 실제 온도를 계산하기 위해 물체의 방사율을 감지할 수 없습니다열화상 카메라는 물체의 "겉보기" 온도만 계산할 수 있습니다.

 

물체의 겉보기 온도는 물체의 온도와 방사율의 함수로 구해집니다

 

실제 온도는 같지만 방사율이 다른 두 물체가 주어지면 방사율이 더 높은 물체에 대해 더 높은 겉보기 온도가 계산됩니다

 

방사율은 같지만 실제 온도가 다른 두 물체가 주어지면 실제 온도가 더 높은 물체에 대해 더 높은 겉보기 온도가 계산됩니다

 

물체의 겉보기 온도는 실제 온도와 크게 다를 수 있습니다.

 

물체의 방사율이 알려진 경우에만 열화상 카메라가 방사율을 보정하고 실제 온도를 계산할 수 있습니다.

 

반사율 (Reflectivity)

반사율이 높은 물체는 다른 물체에서 방출되는 에너지를 반사할 수 있습니다

예를 들어 광택 처리된 알루미늄은 표면에 입사하는 에너지의 약 90%를 반사합니다

 

열화상 카메라가 물체의 실제 온도를 계산하기 위해 필요한 물체의 방사율과 반사율을 감지할 수 없습니다따라서 열화상 카메라는 물체의 겉보기 온도를 계산할 때 물체에서 방출되는 에너지와 물체 표면에서 반사되는 에너지를 감지하고 정량화합니다

 

물체가 더 높은 온도의 다른 복사원으로부터 에너지를 반사하는 경우 물체에 대해 계산된 겉보기 온도는 실제 온도보다 더 높을 것입니다

 

마찬가지로 물체가 더 낮은 온도의 다른 방사원으로부터 에너지를 반사하는 경우, 실제 온도는 같지만 방사율이 다른 두 물체가 주어지면 방사율이 더 높은 물체에 대해 더 높은 겉보기 온도가 계산됩니다.

 

방사율은 같지만 실제 온도가 다른 두 물체가 주어지면 실제 온도가 더 높은 물체에 대해 더 높은 겉보기 온도가 계산됩니다

 

물체의 겉보기 온도는 실제 온도와 크게 다를 수 있습니다물체의 방사율이 알려진 경우에만 열화상 카메라가 방사율을 보정하고 실제 온도를 계산할 수 있습니다.

 

방사율 예

재료의 방사율은 파장에 따라 달라질 수 있습니다그러나 대부분의 재료는 열화상 카메라가 작동하는 파장 범위 전체에 걸쳐 비교적 균일한 방사율을 가지고 있습니다예를 들어, 대부분의 플라스틱, 세라믹 및 금속의 방사율은 7~14µm의 파장 범위에서 크게 변하지 않습니다.

 

재료마다 방사율 값이 0~1 범위 내에서 변합니다

 

플라스틱, 세라믹, 물 및 유기 물질을 포함한 많은 일반적인 물질은 높은 방사율을 가지고 있습니다

 

코팅되지 않은 금속은 방사율이 매우 낮을 수 있습니다예를 들어 광택 처리된 스테인리스 스틸은 방사율이 약 0.1이므로 동일한 온도에서 흑체 에너지 양의 10분의 1만 방출합니다.

 

종류 방사율
인간의 피부 0.98
0.95
알루미늄(광택) 0.1
알루미늄(아노다이징 처리) 0.65
플라스틱 0.93
세라믹 0.94
유리 0.87
고무 0.9
옷감 0.95

 

특정 물질의 방사율은 특정 화학적 구성과 표면 특성에 따라 다릅니다예를 들어 매끄럽고 반짝이는 표면은 반사율이 높아 방사율이 낮은 경향이 있습니다.

반응형
반응형

정규식

정규식은 문자열에 대해 다양한 유형의 작업을 수행하는 데 사용됩니다.

Python의 정규식은 패턴과 함수의 두 부분으로 구성됩니다. 정규식 패턴은 문자열 내에서 패턴을 검색하는 데 사용되는 반면 함수는 패턴에서 반환된 문자열에 대한 작업을 수행하는 데 사용됩니다.

Python에서 정규식을 사용하려면 re 모듈을 가져와야 합니다. 아주 간단한 정규식의 예를 살펴보겠습니다.

다음 스크립트는 "^p.*y$" 패턴을 사용하여 정규식을 만듭니다. 이 정규식은 문자 p로 시작하고 문자 y로 끝나는 모든 문자열과 일치합니다.

다음 스크립트에서 정규 표현식에 사용되는 함수는 match()로 문자열이 정규 표현식에 지정된 패턴과 일치하면 True를 반환합니다.

match 함수의 첫 번째 매개변수는 검색할 패턴이고 두 번째 매개변수는 패턴을 검색하려는 문자열입니다.

 

import re

 

pattern = '^p.*y$'

string_list = ["pathology", "biology", "geography", "psychology", "mathematics"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

pathology

psychology

 

메타 문자를 사용하여 패턴 지정

메타 문자는 정규식 패턴을 정의하는 데 사용되는 특수 문자입니다.

 

대괄호 []

대괄호는 문자열에서 여러 패턴을 검색할 때 사용합니다.

다음 스크립트의 패턴은 문자열의 아무 곳에나 문자 a 또는 b가 포함된 모든 문자열을 반환합니다.

 

import re

 

pattern = '.*[ab].*'

string_list = ["pathology", "biology", "geography", "psychology", "mathematics"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

pathology

biology

geography

mathematics

 

마침표

마침표는 특정 위치의 문자를 검색하는 데 사용됩니다.

다음 스크립트는 문자열에서 5개 이상의 문자가 있는 모든 문자열을 검색합니다.

 

import re

 

pattern = '.....'

string_list = ["pathology", "bio", "geography", "psychology", "mathematics", "nic"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

pathology

geography

psychology

mathematics

 

캐럿(^)과 달러($)

캐럿 기호는 문자열의 시작 부분에서 문자 또는 문자열을 검색하는 반면 달러 기호는 다른 문자열의 끝에서 문자 또는 문자열을 검색하는 데 사용됩니다.

예를 들어, 다음 스크립트의 정규식은 알파벳 p로 시작하고 그 뒤에 임의의 수의 문자(.*)가 오고 알파벳 y로 끝나는 모든 문자열을 반환합니다.

 

import re

 

pattern = '^p.*y$'

string_list = ["pathology", "bio", "geography", "psychology", "mathematics", "nic"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

pathology

psychology

 

더하기(+)

더하기 기호는 기호 왼쪽에서 하나 이상의 패턴 발생을 검색하는 데 사용됩니다. 예를 들어, 패턴 ".*og+y" y로 끝나고 문자 o를 포함하는 모든 문자열과 y앞에 g가 하나 이상 오는 패턴을 검색합니다.

 

import re

 

pattern = '.*og+y'

string_list = ["pathology", "bio", "geography", "psychology", "mathematics", "nic"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

pathology

psychology

 

물음표(?)

반면에 물음표 기호는 기호 오른쪽에서 하나 이상의 패턴 발생을 검색하는 데 사용됩니다.

 

import re

 

pattern = '.*at?h'

string_list = ["pathology", "bio", "geography", "psychology", "mathematics", "nic"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

pathology

mathemathics

 

변경(|) 및 그룹화()

변경 기호(|)는 둘 이상의 정규식 패턴 사이에 OR 조건을 지정하는 데 사용됩니다. 그룹화 기호()는 두 개 이상의 패턴을 그룹화하는 데 사용됩니다.

예를 들어 "(^p) | (.*s$)”는 문자 p로 시작하거나 문자 s로 끝나는 모든 문자열과 일치합니다.

 

import re

 

pattern = '(^p)|(.*s$)'

string_list = ["pathologggy", "bio", "geography", "psychology", "mathematics", "nic"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

pathologggy

psychology

mathematics

 

백슬래시

백슬래시는 일반적으로 패턴에서 메타 문자로 사용되는 특수 문자를 사용할 수 있도록 합니다.

예를 들어 문자열 내에서 점 기호를 검색하려면 \를 통해 검색할 수 있습니다. 예를 들어 다음 스크립트의 패턴은 "25."로 시작하는 모든 문자열을 반환합니다.

 

import re

 

pattern = '25\.+.*'

string_list = ["pathologggy", "25", "geography", "psychology", "mathematics", "25.34"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

25.34

 

특수 시퀀스

Python 정규 표현식에는 일부 특수 시퀀스도 포함되어 있습니다.

예를 들어, \A 패턴은 시작 부분에서 문자열을 검색합니다. 예를 들어, 다음 스크립트는 pat로 시작하는 문자열과 일치합니다.

 

import re

 

pattern = '\Aabc'

string_list = ["abcdef", "25", "xyzabcdef", "mathematics", "25.34"]

 

for str in string_list:

  result = re.match(pattern, str)

  if result:

    print(str)

 

Output:

abcdef

 

\d+ 연산자는 문자열 내의 모든 숫자를 검색합니다.

다음은 예입니다.

 

import re

 

pattern = '\d+'

str = "This is 10, he is 22"

 

result = re.findall(pattern, str)

print(result)

 

Output:

[‘10’, ‘22’]

 

대문자 D가 있는 \D+ 시퀀스는 숫자를 제외한 문자열의 모든 단어를 반환합니다. 다음 예를 보십시오.

 

import re

 

pattern = '\D+'

str = "This is 10, he is 22"

 

result = re.findall(pattern, str)

print(result)

 

Output:

['This is ', ', he is ']

 

\w+ 시퀀스는 문자열 내의 특수 문자를 제외한 모든 단어를 반환합니다.

 

import re

 

pattern = '\w+'

str = "This is 10% he is # 22"

 

result = re.findall(pattern, str)

print(result)

 

Output:

['This', 'is', '10', 'he', 'is', '22']

 

대문자 W가 있는 \W+는 문자열 내에서 특수 문자만 반환합니다.

 

import re

 

pattern = '\W+'

str = "This is 10% he is # 22"

 

result = re.findall(pattern, str)

print(result)

 

Output:

[' ', ' ', '% ', ' ', ' # ']

 

함수의 정규 표현식

findall() 함수

findall() 함수는 특정 패턴과 일치하는 문자열의 모든 단어를 일치시키고 반환합니다.

 

import re

 

pattern = '\d+'

str = "This is 10 he is 22 and the gate is 80"

 

result = re.findall(pattern, str)

print(result)

 

Output:

['10', '22', '80']

 

split() 함수

split() 함수는 정규 표현식과 일치하는 위치에서 문자열을 분할합니다.

예를 들어 다음 스크립트의 정규식은 숫자가 있는 문자열을 분할합니다.

 

import re

 

pattern = '\d+'

str = "This is 10 he is 22 and the gate is 80."

 

result = re.split(pattern, str)

print(result)

 

Output:

['This is ', ' he is ', ' and the gate is ', '.']

 

sub() subn() 함수

sub() 함수는 지정된 패턴과 일치하는 위치에서 문자열을 다른 문자열로 대체합니다.

예를 들어, 다음 스크립트는 문자열의 모든 숫자를 문자열 XX로 바꿉니다.

 

import re

 

pattern = '\d+'

str = "This is 10 he is 22 and the gate is 80."

 

result = re.sub(pattern, 'XX', str)

print(result)

 

Output:

This is XX he is XX and the gate is XX.

 

subn() 함수는 sub() 함수와 매우 유사합니다.

그러나 업데이트된 문자열 외에도 subn() 함수는 대체 횟수도 반환합니다.

예를 들어, 다음 스크립트에서 subn() 함수는 출력에 표시된 대로 세 번 대체합니다.

 

import re

 

pattern = '\d+'

str = "This is 10 he is 22 and the gate is 80."

 

result = re.subn(pattern, 'XX', str)

print(result)

 

Output:

(‘This is XX he is XX and the gate is XX.’, 3)

 

search()

search() 메서드는 문자열 내에서 패턴을 검색하고 처음 일치하는 패턴의 값과 인덱스를 반환합니다.

예를 들어 다음 스크립트는 문자열 내에서 숫자를 검색합니다. 첫 번째 숫자가 10이므로 해당 값, 10과 해당 인덱스(8-10)가 반환됩니다.

 

import re

 

pattern = '\d+'

str = "This is 10 he is 22 and the gate is 80."

 

result = re.search(pattern, str)

print(result)

 

Output:

<re.Match object; span=(8, 10), match='10'>

반응형
반응형

방사율

흑체는 이상적이지만 실제 물체는 주어진 온도에서 최대 열복사를 방출할 수 없습니다. 그러나 어떤 물체로부터의 실제 열복사 방출은 방사율 ε을 곱하여 쉽게 계산할 수 있습니다.

 

, 물체의 방사율은 표면에서 실제로 방출되는 복사량과 동일한 온도에서 흑체에서 방출되는 복사량의 비율입니다.

 

방사율에 따른 물체 분류

방사율의 크기는 0 ≤ ε ≤ 1 사이의 값입니다. 다음 그림은 주어진 온도에서 스펙트럼 반구형 방사율과 해당하는 열복사 방출 스펙트럼을 보여줍니다.

 

방사율과 키르히호프의 법칙

방사율은 키르히호프의 법칙에서 추측할 수 있습니다. 이 법칙은 어떤 물체에 의해 흡수된 방사선의 양이 이 물체에서 방출되는 방사선의 양과 같다는 것을 나타냅니다.

 

ε = α

 

여기서 ε 및 소위 흡수율 α는 방출되거나 흡수되는 방사선의 비율을 나타냅니다.

 

에너지 보존을 위해서는 물체에 입사하는 모든 복사선(Φ0)이 반사(ΦR)(반사 법칙에 따라 지향되거나 거친 표면에서 확산 산란됨), 물체를 통해 투과(ΦT) 또는 흡수(ΦA)되어야 합니다.

 

Φ0 = ΦR + ΦT + ΦA

 

방사율 값에 영향을 미치는 매개변수

1.     재료

대부분의 비금속 재료는 피부, 종이, 페인트, , 유리 등과 같은 경우 방사율이 0.8이상의 값을 갖습니다.

대조적으로, 금속, 특히 광택이 나는 금속은 0.2 미만의 매우 낮은 방사율로 인해 측정의 어려움이 있습니다.

 

2.     불규칙한 표면 구조

주어진 재료에 대해 방사율은 표면 구조에 따라 상당히 다를 수 있습니다.

 

일부 연마된 금속은 0.02만큼 낮은 ε 값에 도달할 수 있지만 표면이 거칠어지면 방사율이 훨씬 더 커질 수 있으며 심지어 0.8 이상의 값에 도달할 수도 있습니다. 원래 금속 부품에 대한 가장 높은 값은 시간이 지남에 따라 산화/부식을 통해 표면이 변형된 곳에서 발견됩니다. 예를 들어, 요소, 공기의 산소, 비의 물 등에 노출된 상태에서 수년 동안 작동되는 전기 연결의 금속 볼트를 상상해 보십시오. 표면의 이러한 화학적 변형으로 인해 강하게 산화된 Cu의 경우 0.78, 일부 강 화합물의 경우 0.90만큼 높은 값이 보고되었습니다.

 

3.     시야각

방사율은 동일한 온도에서 흑체에서 방출되는 복사량에 대한 표면에서 실제로 방출되는 복사량의 비율로 정의됩니다.

복사 방향은 방출 방향에 따라 변화를 보입니다.

 

실제 표면은 동일한 온도(왼쪽: 빨간색 실선)에서 흑체보다 적은 복사를 방출한다는 사실 외에도 실제 회색 물체의 복사는 일반적으로 방출 각도에 따라 달라집니다.

 

다음 그림에서 실제 광도(오른쪽: 파란색 실선)와 회색 물체의 Lambertian 동작(오른쪽: 빨간색 파선) 사이의 편차로 나타납니다. 이 동작은 IR 카메라를 사용하는 비접촉 온도 측정에 큰 영향을 줄 수 있습니다. 물체의 표면에 수직인 방향(δ = 0º)에서 관찰되는 물체는 비스듬한 각도에서 관찰할 때보다 더 많은 복사를 방출하기 때문입니다. 이것은 방사율이 표면 법선에 대한 관찰 각도에 의존한다는 것을 의미합니다.

 

 

다음 그림은 물체의 방향에 따른 방사율의 변화를 보여주고 있습니다.

 

 

실제 작업을 위한 방사율 측정/추측 기술

가장 쉬운 방법은 복사율이 알려진 테이프나 페인트를 연구 대상에 부착하는 것입니다. 분석에서 테이프 또는 페인트의 표면 온도는 알려진 ε을 따릅니다. 양호한 열 접촉을 가정하고 열 평형이 확립될 때까지 기다리면 물체의 인접 표면 온도가 동일한 것으로 가정됩니다. 따라서 물체 방사율은 물체 온도가 알려진 테이프 표면 온도와 같아질 때까지 카메라 소프트웨어에서 ε을 변경하여 찾습니다.

 

열전대로 여러 지점 표면 온도를 직접 측정하고 IR 이미지를 보정하는 데 사용할 수도 있습니다. 이 경우 좋은 열 접촉이 이루어지고 열 평형이 설정되고 열전대 자체가 열 전도를 통해 물체 온도를 변경하지 않는지 확인해야 합니다. 유용한 조건은 열전대의 열용량이 물체의 열용량보다 훨씬 작아야 한다는 것입니다.

반응형
반응형

디렉토리

디렉토리는 각 파일의 형식이 다를 수 있는 파일 모음입니다. 파이썬은 프로그래머가 디렉토리 작업을 하는 데 도움이 되는 다양한 방법을 OS 모듈에 가지고 있습니다.

 

디렉토리 작업

현재 작업 디렉토리 확인하기

import os

cwd = os.getcwd()

print("Current Workking Directory:", cwd)

 

Output:

Current Workking Directory: /content

 

다음 스크립트는 현재 작업 디렉토리 아래 서브 디렉토리 생성하기

import os

os.mkdir("mysub")

print("Current Workking Directory:", cwd)

 

다음 스크립트는 서브 디렉토리 아래 서브 디렉토리 생성하기

import os

os.mkdir("mysub/mysub2")

 

다음 스크립트는 디렉토리를 제거하는 예제입니다.

import os

os.rmdir("mysub/mysub2")

 

다음 스크립트는 디렉토리 이름을 변경하는 예제입니다.

import os

os.rename("mysub", "newdir")

 

다음 스크립트는 디렉토리 내용을 확인하는 예제입니다.

import os

print(os.listdir("."))

 

디렉토리와 서브디렉토리 내용 확인하기

walk() 함수는 디렉토리 및 하위 디렉토리의 내용을 식별하는 데 사용됩니다.

os.walk(path, topdown=True, onerror=None, followlinks=False)

 

iterator 객체를 반환하고 for 루프를 사용하여 그 내용을 볼 수 있습니다.

경로: 디렉토리 경로

topdown = True이면 위에서 아래로 순회됩니다.

onerror = None이면 실행해야 하는 함수를 반환합니다.

Followlinks = True이면 표시된 대로 디렉토리를 방문합니다.

심볼릭 링크에 의해.

 

다음 스크립트는 현재 작업 디렉토리 및 관련 하위 디렉토리의 내용을 출력하는 예제입니다.

import os

for dirpath, dirnames, filenames in os.walk('.'):

  print("Current Directory Path:", dirpath)

  print("Directories:", dirnames)

  print("Files:", filenames)

  print()

 

파일에 관한 정보를 얻는 방법

OS 모듈 stat() 함수는 크기, 마지막 액세스 시간, 마지막 수정 시간 등과 같은 파일의 통계를 식별하는 데 사용됩니다.

stats = os.stat(“abc.txt”)

 

다음 표는 파일의 다른 매개변수와 그 매개변수에서 얻은 정보를 보여줍니다.

Parameters Information Obtained
st_mode Protection Bits.
st_dev Device.
st_ino Node Number.
st_uid User Id of Owner
st_nlink Number of Hard Links.
st_size Size of file in bytes.
st_gid Group-Id of Owner.
st_atime Time of Most Recent Access.
st_ctime Time of Most Recent Meta Data Change.
st_mtime Time of Most Recent Modification.

 

소켓을 통해 데이터 보내기 및 받기

같은 컴퓨터나 다른 컴퓨터에 있는 응용 프로그램에서 데이터를 보내고 받기 위해 소켓을 사용할 수 있습니다. 소켓은 IP 주소와 포트 번호의 조합으로 나타내는 경로를 의미합니다.

Python 스크립트를 사용하여 소켓을 통해 데이터를 보내거나 받을 수 있습니다.

서버 응용 프로그램은 특정 IP에 대한 클라이언트 요청을 수신하고 클라이언트가 서버에 연결할 때마다 데이터를 클라이언트에 보냅니다.

 

소켓을 통한 데이터 전송

서버를 생성하려면 소켓 모듈에서 Socket 클래스의 객체를 생성해야 합니다.

 

다음으로 소켓을 포트에 바인딩해야 합니다. 소켓을 포트에 바인딩한다는 것은 소켓이 해당 포트를 통해 데이터를 보내고 받는다는 것을 의미합니다.

소켓을 포트에 바인딩하려면 bind() 메서드를 호출해야 합니다. 첫 번째 매개변수는 요청을 수신하려는 시스템의 IP 주소입니다. 빈 문자열을 첫 번째 매개변수로 전달하면 시스템은 다른 IP의 요청을 처리합니다. 두 번째 매개변수는 소켓을 바인딩하려는 포트입니다.

 

다음으로 Socket 클래스 객체를 사용하여 listen() 메서드를 호출해야 합니다. listen 메서드는 대기열에 대한 연결 수를 지정합니다.

 

마지막으로 루프 내부의 소켓 객체에 대해 accept() 메서드를 호출해야 합니다. 루프 내에서 accept() 메서드를 호출하면 소켓이 일정한 수신 모드로 전환됩니다. 클라이언트가 서버에 연결을 시도할 때마다 accept() 메서드는 클라이언트 연결 및 주소를 반환합니다.

 

클라이언트에 데이터를 다시 보내려면 연결에서 send() 메서드를 호출하고 메서드 매개 변수로 클라이언트에 보내고 싶은 데이터를 전달해야 합니다.

 

다음 스크립트에서는 한 번에 5개의 연결이 대기열에 들어가고 그 이후에는 소켓에서 새 연결을 수락하지 않습니다. 스크립트를 실행하면 서버는 포트 5555에서 수신 대기를 시작합니다.

 

import socket

 

new_socket = socket.socket()

print("Socket successfully created")

port = 5555

 

new_socket.bind(('', port))

print("Socket connected to port %s"%(port))

 

new_socket.listen(5)

print("Server is listening to request")

 

while True:

  conn, clt_address = new_socket.accept()

  print('Received connection request from', clt_address)

  conn.send(b'Welcome to the server')

  conn.close()

 

소켓을 통해 데이터 수신

소켓을 통해 데이터를 수신하려면 다시 Socket 클래스 개체를 만들어야 합니다.

다음으로 서버의 IP 주소와 포트 번호로 connect() 메소드를 호출해야 합니다.

마지막으로 서버에서 데이터를 수신하려면 수신할 데이터의 바이트 수와 함께 recv() 메서드를 호출해야 합니다.

 

import socket

 

client_socket = socket.socket()

port = 5555

client_socket.connect(('127.0.0.1', port))

print(client_socket.recv(2048))

client_socket.close()

 

반응형

+ Recent posts